package org.xtext.tp5.mydsl.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.xtext.tp5.mydsl.services.MyDslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
@SuppressWarnings("all")
public class InternalMyDslParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'paquete'", "'{'", "'}'", "'importar'", "'.'", "'*'", "'atributo'", "'clase'", "'extiende de'", "'con'", "'@Test'", "'var'", "':'", "'val'", "'op'", "'('", "','", "')'", "'='", "'+='", "'-='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'>='", "'<='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'<=>'", "'+'", "'-'", "'**'", "'/'", "'%'", "'!'", "'as'", "'?.'", "'*.'", "'#'", "'['", "']'", "'|'", "';'", "'if'", "'else'", "'switch'", "'default'", "'case'", "'for'", "'while'", "'do'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'::'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'catch'", "'?'", "'&'", "'publico'", "'privado'", "'protegido'"
    };
    public static final int RULE_ID=4;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=12;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int EOF=-1;
    public static final int T__93=93;
    public static final int T__19=19;
    public static final int T__94=94;
    public static final int T__91=91;
    public static final int T__92=92;
    public static final int RULE_HEX=6;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__90=90;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_DECIMAL=8;
    public static final int T__80=80;
    public static final int T__81=81;
    public static final int T__82=82;
    public static final int T__83=83;
    public static final int T__85=85;
    public static final int T__84=84;
    public static final int T__87=87;
    public static final int T__86=86;
    public static final int T__89=89;
    public static final int T__88=88;
    public static final int RULE_ML_COMMENT=9;
    public static final int RULE_STRING=5;
    public static final int T__71=71;
    public static final int T__72=72;
    public static final int T__70=70;
    public static final int T__76=76;
    public static final int T__75=75;
    public static final int T__74=74;
    public static final int T__73=73;
    public static final int T__79=79;
    public static final int T__78=78;
    public static final int T__77=77;
    public static final int T__68=68;
    public static final int T__69=69;
    public static final int T__66=66;
    public static final int T__67=67;
    public static final int T__64=64;
    public static final int T__65=65;
    public static final int T__62=62;
    public static final int T__63=63;
    public static final int T__61=61;
    public static final int T__60=60;
    public static final int T__55=55;
    public static final int T__56=56;
    public static final int T__57=57;
    public static final int T__58=58;
    public static final int T__51=51;
    public static final int T__52=52;
    public static final int T__53=53;
    public static final int T__54=54;
    public static final int T__59=59;
    public static final int RULE_INT=7;
    public static final int T__50=50;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int RULE_SL_COMMENT=10;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_WS=11;

    // delegates
    // delegators


        public InternalMyDslParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalMyDslParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalMyDslParser.tokenNames; }
    public String getGrammarFileName() { return "../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g"; }



     	private MyDslGrammarAccess grammarAccess;
     	
        public InternalMyDslParser(TokenStream input, MyDslGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "DomainModel";	
       	}
       	
       	@Override
       	protected MyDslGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleDomainModel"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:68:1: entryRuleDomainModel returns [EObject current=null] : iv_ruleDomainModel= ruleDomainModel EOF ;
    public final EObject entryRuleDomainModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDomainModel = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:69:2: (iv_ruleDomainModel= ruleDomainModel EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:70:2: iv_ruleDomainModel= ruleDomainModel EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDomainModelRule()); 
            }
            pushFollow(FOLLOW_ruleDomainModel_in_entryRuleDomainModel75);
            iv_ruleDomainModel=ruleDomainModel();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDomainModel; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleDomainModel85); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDomainModel"


    // $ANTLR start "ruleDomainModel"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:77:1: ruleDomainModel returns [EObject current=null] : ( (lv_elements_0_0= ruleAbstractElement ) )* ;
    public final EObject ruleDomainModel() throws RecognitionException {
        EObject current = null;

        EObject lv_elements_0_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:80:28: ( ( (lv_elements_0_0= ruleAbstractElement ) )* )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:81:1: ( (lv_elements_0_0= ruleAbstractElement ) )*
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:81:1: ( (lv_elements_0_0= ruleAbstractElement ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==13||LA1_0==16||(LA1_0>=19 && LA1_0<=20)) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:82:1: (lv_elements_0_0= ruleAbstractElement )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:82:1: (lv_elements_0_0= ruleAbstractElement )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:83:3: lv_elements_0_0= ruleAbstractElement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getDomainModelAccess().getElementsAbstractElementParserRuleCall_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleAbstractElement_in_ruleDomainModel130);
            	    lv_elements_0_0=ruleAbstractElement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getDomainModelRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"elements",
            	              		lv_elements_0_0, 
            	              		"AbstractElement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDomainModel"


    // $ANTLR start "entryRuleAbstractElement"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:107:1: entryRuleAbstractElement returns [EObject current=null] : iv_ruleAbstractElement= ruleAbstractElement EOF ;
    public final EObject entryRuleAbstractElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAbstractElement = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:108:2: (iv_ruleAbstractElement= ruleAbstractElement EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:109:2: iv_ruleAbstractElement= ruleAbstractElement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAbstractElementRule()); 
            }
            pushFollow(FOLLOW_ruleAbstractElement_in_entryRuleAbstractElement166);
            iv_ruleAbstractElement=ruleAbstractElement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAbstractElement; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleAbstractElement176); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAbstractElement"


    // $ANTLR start "ruleAbstractElement"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:116:1: ruleAbstractElement returns [EObject current=null] : (this_PackageDeclaration_0= rulePackageDeclaration | this_Entity_1= ruleEntity | this_Import_2= ruleImport | this_Trait_3= ruleTrait ) ;
    public final EObject ruleAbstractElement() throws RecognitionException {
        EObject current = null;

        EObject this_PackageDeclaration_0 = null;

        EObject this_Entity_1 = null;

        EObject this_Import_2 = null;

        EObject this_Trait_3 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:119:28: ( (this_PackageDeclaration_0= rulePackageDeclaration | this_Entity_1= ruleEntity | this_Import_2= ruleImport | this_Trait_3= ruleTrait ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:120:1: (this_PackageDeclaration_0= rulePackageDeclaration | this_Entity_1= ruleEntity | this_Import_2= ruleImport | this_Trait_3= ruleTrait )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:120:1: (this_PackageDeclaration_0= rulePackageDeclaration | this_Entity_1= ruleEntity | this_Import_2= ruleImport | this_Trait_3= ruleTrait )
            int alt2=4;
            switch ( input.LA(1) ) {
            case 13:
                {
                alt2=1;
                }
                break;
            case 20:
                {
                alt2=2;
                }
                break;
            case 16:
                {
                alt2=3;
                }
                break;
            case 19:
                {
                alt2=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }

            switch (alt2) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:121:5: this_PackageDeclaration_0= rulePackageDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getAbstractElementAccess().getPackageDeclarationParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_rulePackageDeclaration_in_ruleAbstractElement223);
                    this_PackageDeclaration_0=rulePackageDeclaration();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PackageDeclaration_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:131:5: this_Entity_1= ruleEntity
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getAbstractElementAccess().getEntityParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleEntity_in_ruleAbstractElement250);
                    this_Entity_1=ruleEntity();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Entity_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:141:5: this_Import_2= ruleImport
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getAbstractElementAccess().getImportParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleImport_in_ruleAbstractElement277);
                    this_Import_2=ruleImport();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Import_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:151:5: this_Trait_3= ruleTrait
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getAbstractElementAccess().getTraitParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleTrait_in_ruleAbstractElement304);
                    this_Trait_3=ruleTrait();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Trait_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAbstractElement"


    // $ANTLR start "entryRulePackageDeclaration"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:167:1: entryRulePackageDeclaration returns [EObject current=null] : iv_rulePackageDeclaration= rulePackageDeclaration EOF ;
    public final EObject entryRulePackageDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePackageDeclaration = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:168:2: (iv_rulePackageDeclaration= rulePackageDeclaration EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:169:2: iv_rulePackageDeclaration= rulePackageDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPackageDeclarationRule()); 
            }
            pushFollow(FOLLOW_rulePackageDeclaration_in_entryRulePackageDeclaration339);
            iv_rulePackageDeclaration=rulePackageDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePackageDeclaration; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRulePackageDeclaration349); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePackageDeclaration"


    // $ANTLR start "rulePackageDeclaration"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:176:1: rulePackageDeclaration returns [EObject current=null] : (otherlv_0= 'paquete' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleAbstractElement ) )* otherlv_4= '}' ) ;
    public final EObject rulePackageDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_elements_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:179:28: ( (otherlv_0= 'paquete' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleAbstractElement ) )* otherlv_4= '}' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:180:1: (otherlv_0= 'paquete' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleAbstractElement ) )* otherlv_4= '}' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:180:1: (otherlv_0= 'paquete' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleAbstractElement ) )* otherlv_4= '}' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:180:3: otherlv_0= 'paquete' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleAbstractElement ) )* otherlv_4= '}'
            {
            otherlv_0=(Token)match(input,13,FOLLOW_13_in_rulePackageDeclaration386); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getPackageDeclarationAccess().getPaqueteKeyword_0());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:184:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:185:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:185:1: (lv_name_1_0= ruleQualifiedName )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:186:3: lv_name_1_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPackageDeclarationAccess().getNameQualifiedNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_rulePackageDeclaration407);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPackageDeclarationRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"QualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,14,FOLLOW_14_in_rulePackageDeclaration419); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getPackageDeclarationAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:206:1: ( (lv_elements_3_0= ruleAbstractElement ) )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==13||LA3_0==16||(LA3_0>=19 && LA3_0<=20)) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:207:1: (lv_elements_3_0= ruleAbstractElement )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:207:1: (lv_elements_3_0= ruleAbstractElement )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:208:3: lv_elements_3_0= ruleAbstractElement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getPackageDeclarationAccess().getElementsAbstractElementParserRuleCall_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleAbstractElement_in_rulePackageDeclaration440);
            	    lv_elements_3_0=ruleAbstractElement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getPackageDeclarationRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"elements",
            	              		lv_elements_3_0, 
            	              		"AbstractElement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);

            otherlv_4=(Token)match(input,15,FOLLOW_15_in_rulePackageDeclaration453); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getPackageDeclarationAccess().getRightCurlyBracketKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePackageDeclaration"


    // $ANTLR start "entryRuleImport"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:236:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
    public final EObject entryRuleImport() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImport = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:237:2: (iv_ruleImport= ruleImport EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:238:2: iv_ruleImport= ruleImport EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getImportRule()); 
            }
            pushFollow(FOLLOW_ruleImport_in_entryRuleImport489);
            iv_ruleImport=ruleImport();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleImport; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleImport499); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleImport"


    // $ANTLR start "ruleImport"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:245:1: ruleImport returns [EObject current=null] : (otherlv_0= 'importar' ( (lv_importNameSpace_1_0= ruleQNameWithWildcard ) ) ) ;
    public final EObject ruleImport() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        AntlrDatatypeRuleToken lv_importNameSpace_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:248:28: ( (otherlv_0= 'importar' ( (lv_importNameSpace_1_0= ruleQNameWithWildcard ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:249:1: (otherlv_0= 'importar' ( (lv_importNameSpace_1_0= ruleQNameWithWildcard ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:249:1: (otherlv_0= 'importar' ( (lv_importNameSpace_1_0= ruleQNameWithWildcard ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:249:3: otherlv_0= 'importar' ( (lv_importNameSpace_1_0= ruleQNameWithWildcard ) )
            {
            otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleImport536); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportarKeyword_0());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:253:1: ( (lv_importNameSpace_1_0= ruleQNameWithWildcard ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:254:1: (lv_importNameSpace_1_0= ruleQNameWithWildcard )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:254:1: (lv_importNameSpace_1_0= ruleQNameWithWildcard )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:255:3: lv_importNameSpace_1_0= ruleQNameWithWildcard
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getImportAccess().getImportNameSpaceQNameWithWildcardParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQNameWithWildcard_in_ruleImport557);
            lv_importNameSpace_1_0=ruleQNameWithWildcard();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getImportRule());
              	        }
                     		set(
                     			current, 
                     			"importNameSpace",
                      		lv_importNameSpace_1_0, 
                      		"QNameWithWildcard");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleImport"


    // $ANTLR start "entryRuleQNameWithWildcard"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:279:1: entryRuleQNameWithWildcard returns [String current=null] : iv_ruleQNameWithWildcard= ruleQNameWithWildcard EOF ;
    public final String entryRuleQNameWithWildcard() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQNameWithWildcard = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:280:2: (iv_ruleQNameWithWildcard= ruleQNameWithWildcard EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:281:2: iv_ruleQNameWithWildcard= ruleQNameWithWildcard EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getQNameWithWildcardRule()); 
            }
            pushFollow(FOLLOW_ruleQNameWithWildcard_in_entryRuleQNameWithWildcard594);
            iv_ruleQNameWithWildcard=ruleQNameWithWildcard();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleQNameWithWildcard.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleQNameWithWildcard605); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQNameWithWildcard"


    // $ANTLR start "ruleQNameWithWildcard"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:288:1: ruleQNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? ) ;
    public final AntlrDatatypeRuleToken ruleQNameWithWildcard() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_QualifiedName_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:291:28: ( (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:292:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:292:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:293:5: this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )?
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getQNameWithWildcardAccess().getQualifiedNameParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleQNameWithWildcard652);
            this_QualifiedName_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(this_QualifiedName_0);
                  
            }
            if ( state.backtracking==0 ) {
               
                      afterParserOrEnumRuleCall();
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:303:1: (kw= '.' kw= '*' )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==17) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:304:2: kw= '.' kw= '*'
                    {
                    kw=(Token)match(input,17,FOLLOW_17_in_ruleQNameWithWildcard671); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getQNameWithWildcardAccess().getFullStopKeyword_1_0()); 
                          
                    }
                    kw=(Token)match(input,18,FOLLOW_18_in_ruleQNameWithWildcard684); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getQNameWithWildcardAccess().getAsteriskKeyword_1_1()); 
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQNameWithWildcard"


    // $ANTLR start "entryRuleTrait"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:323:1: entryRuleTrait returns [EObject current=null] : iv_ruleTrait= ruleTrait EOF ;
    public final EObject entryRuleTrait() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTrait = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:324:2: (iv_ruleTrait= ruleTrait EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:325:2: iv_ruleTrait= ruleTrait EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTraitRule()); 
            }
            pushFollow(FOLLOW_ruleTrait_in_entryRuleTrait726);
            iv_ruleTrait=ruleTrait();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTrait; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTrait736); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTrait"


    // $ANTLR start "ruleTrait"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:332:1: ruleTrait returns [EObject current=null] : (otherlv_0= 'atributo' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( (lv_operations_3_0= ruleOperation ) )* otherlv_4= '}' ) ;
    public final EObject ruleTrait() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_operations_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:335:28: ( (otherlv_0= 'atributo' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( (lv_operations_3_0= ruleOperation ) )* otherlv_4= '}' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:336:1: (otherlv_0= 'atributo' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( (lv_operations_3_0= ruleOperation ) )* otherlv_4= '}' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:336:1: (otherlv_0= 'atributo' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( (lv_operations_3_0= ruleOperation ) )* otherlv_4= '}' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:336:3: otherlv_0= 'atributo' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( (lv_operations_3_0= ruleOperation ) )* otherlv_4= '}'
            {
            otherlv_0=(Token)match(input,19,FOLLOW_19_in_ruleTrait773); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getTraitAccess().getAtributoKeyword_0());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:340:1: ( (lv_name_1_0= ruleValidID ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:341:1: (lv_name_1_0= ruleValidID )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:341:1: (lv_name_1_0= ruleValidID )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:342:3: lv_name_1_0= ruleValidID
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getTraitAccess().getNameValidIDParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleValidID_in_ruleTrait794);
            lv_name_1_0=ruleValidID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getTraitRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ValidID");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleTrait806); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getTraitAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:362:1: ( (lv_operations_3_0= ruleOperation ) )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==23||(LA5_0>=92 && LA5_0<=94)) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:363:1: (lv_operations_3_0= ruleOperation )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:363:1: (lv_operations_3_0= ruleOperation )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:364:3: lv_operations_3_0= ruleOperation
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getTraitAccess().getOperationsOperationParserRuleCall_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOperation_in_ruleTrait827);
            	    lv_operations_3_0=ruleOperation();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getTraitRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"operations",
            	              		lv_operations_3_0, 
            	              		"Operation");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);

            otherlv_4=(Token)match(input,15,FOLLOW_15_in_ruleTrait840); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getTraitAccess().getRightCurlyBracketKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTrait"


    // $ANTLR start "entryRuleEntity"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:392:1: entryRuleEntity returns [EObject current=null] : iv_ruleEntity= ruleEntity EOF ;
    public final EObject entryRuleEntity() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEntity = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:393:2: (iv_ruleEntity= ruleEntity EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:394:2: iv_ruleEntity= ruleEntity EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getEntityRule()); 
            }
            pushFollow(FOLLOW_ruleEntity_in_entryRuleEntity876);
            iv_ruleEntity=ruleEntity();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleEntity; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleEntity886); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEntity"


    // $ANTLR start "ruleEntity"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:401:1: ruleEntity returns [EObject current=null] : (otherlv_0= 'clase' ( (lv_name_1_0= ruleValidID ) ) (otherlv_2= 'extiende de' ( (lv_superType_3_0= ruleJvmTypeReference ) ) )? (otherlv_4= 'con' ( (otherlv_5= RULE_ID ) ) )* otherlv_6= '{' ( (lv_features_7_0= ruleFeature ) )* otherlv_8= '}' ) ;
    public final EObject ruleEntity() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_superType_3_0 = null;

        EObject lv_features_7_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:404:28: ( (otherlv_0= 'clase' ( (lv_name_1_0= ruleValidID ) ) (otherlv_2= 'extiende de' ( (lv_superType_3_0= ruleJvmTypeReference ) ) )? (otherlv_4= 'con' ( (otherlv_5= RULE_ID ) ) )* otherlv_6= '{' ( (lv_features_7_0= ruleFeature ) )* otherlv_8= '}' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:405:1: (otherlv_0= 'clase' ( (lv_name_1_0= ruleValidID ) ) (otherlv_2= 'extiende de' ( (lv_superType_3_0= ruleJvmTypeReference ) ) )? (otherlv_4= 'con' ( (otherlv_5= RULE_ID ) ) )* otherlv_6= '{' ( (lv_features_7_0= ruleFeature ) )* otherlv_8= '}' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:405:1: (otherlv_0= 'clase' ( (lv_name_1_0= ruleValidID ) ) (otherlv_2= 'extiende de' ( (lv_superType_3_0= ruleJvmTypeReference ) ) )? (otherlv_4= 'con' ( (otherlv_5= RULE_ID ) ) )* otherlv_6= '{' ( (lv_features_7_0= ruleFeature ) )* otherlv_8= '}' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:405:3: otherlv_0= 'clase' ( (lv_name_1_0= ruleValidID ) ) (otherlv_2= 'extiende de' ( (lv_superType_3_0= ruleJvmTypeReference ) ) )? (otherlv_4= 'con' ( (otherlv_5= RULE_ID ) ) )* otherlv_6= '{' ( (lv_features_7_0= ruleFeature ) )* otherlv_8= '}'
            {
            otherlv_0=(Token)match(input,20,FOLLOW_20_in_ruleEntity923); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getEntityAccess().getClaseKeyword_0());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:409:1: ( (lv_name_1_0= ruleValidID ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:410:1: (lv_name_1_0= ruleValidID )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:410:1: (lv_name_1_0= ruleValidID )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:411:3: lv_name_1_0= ruleValidID
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getEntityAccess().getNameValidIDParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleValidID_in_ruleEntity944);
            lv_name_1_0=ruleValidID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getEntityRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ValidID");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:427:2: (otherlv_2= 'extiende de' ( (lv_superType_3_0= ruleJvmTypeReference ) ) )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==21) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:427:4: otherlv_2= 'extiende de' ( (lv_superType_3_0= ruleJvmTypeReference ) )
                    {
                    otherlv_2=(Token)match(input,21,FOLLOW_21_in_ruleEntity957); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getEntityAccess().getExtiendeDeKeyword_2_0());
                          
                    }
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:431:1: ( (lv_superType_3_0= ruleJvmTypeReference ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:432:1: (lv_superType_3_0= ruleJvmTypeReference )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:432:1: (lv_superType_3_0= ruleJvmTypeReference )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:433:3: lv_superType_3_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getEntityAccess().getSuperTypeJvmTypeReferenceParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleEntity978);
                    lv_superType_3_0=ruleJvmTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getEntityRule());
                      	        }
                             		set(
                             			current, 
                             			"superType",
                              		lv_superType_3_0, 
                              		"JvmTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:449:4: (otherlv_4= 'con' ( (otherlv_5= RULE_ID ) ) )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==22) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:449:6: otherlv_4= 'con' ( (otherlv_5= RULE_ID ) )
            	    {
            	    otherlv_4=(Token)match(input,22,FOLLOW_22_in_ruleEntity993); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_4, grammarAccess.getEntityAccess().getConKeyword_3_0());
            	          
            	    }
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:453:1: ( (otherlv_5= RULE_ID ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:454:1: (otherlv_5= RULE_ID )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:454:1: (otherlv_5= RULE_ID )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:455:3: otherlv_5= RULE_ID
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getEntityRule());
            	      	        }
            	              
            	    }
            	    otherlv_5=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEntity1013); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      		newLeafNode(otherlv_5, grammarAccess.getEntityAccess().getTraitTypesTraitCrossReference_3_1_0()); 
            	      	
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);

            otherlv_6=(Token)match(input,14,FOLLOW_14_in_ruleEntity1027); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getEntityAccess().getLeftCurlyBracketKeyword_4());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:470:1: ( (lv_features_7_0= ruleFeature ) )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( (LA8_0==23||(LA8_0>=92 && LA8_0<=94)) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:471:1: (lv_features_7_0= ruleFeature )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:471:1: (lv_features_7_0= ruleFeature )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:472:3: lv_features_7_0= ruleFeature
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getEntityAccess().getFeaturesFeatureParserRuleCall_5_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleFeature_in_ruleEntity1048);
            	    lv_features_7_0=ruleFeature();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getEntityRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"features",
            	              		lv_features_7_0, 
            	              		"Feature");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop8;
                }
            } while (true);

            otherlv_8=(Token)match(input,15,FOLLOW_15_in_ruleEntity1061); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_8, grammarAccess.getEntityAccess().getRightCurlyBracketKeyword_6());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEntity"


    // $ANTLR start "entryRuleTestAnnotation"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:500:1: entryRuleTestAnnotation returns [String current=null] : iv_ruleTestAnnotation= ruleTestAnnotation EOF ;
    public final String entryRuleTestAnnotation() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleTestAnnotation = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:501:2: (iv_ruleTestAnnotation= ruleTestAnnotation EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:502:2: iv_ruleTestAnnotation= ruleTestAnnotation EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTestAnnotationRule()); 
            }
            pushFollow(FOLLOW_ruleTestAnnotation_in_entryRuleTestAnnotation1098);
            iv_ruleTestAnnotation=ruleTestAnnotation();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTestAnnotation.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTestAnnotation1109); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTestAnnotation"


    // $ANTLR start "ruleTestAnnotation"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:509:1: ruleTestAnnotation returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '@Test' ;
    public final AntlrDatatypeRuleToken ruleTestAnnotation() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:512:28: (kw= '@Test' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:514:2: kw= '@Test'
            {
            kw=(Token)match(input,23,FOLLOW_23_in_ruleTestAnnotation1146); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getTestAnnotationAccess().getTestKeyword()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTestAnnotation"


    // $ANTLR start "entryRuleFeature"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:527:1: entryRuleFeature returns [EObject current=null] : iv_ruleFeature= ruleFeature EOF ;
    public final EObject entryRuleFeature() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFeature = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:528:2: (iv_ruleFeature= ruleFeature EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:529:2: iv_ruleFeature= ruleFeature EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getFeatureRule()); 
            }
            pushFollow(FOLLOW_ruleFeature_in_entryRuleFeature1185);
            iv_ruleFeature=ruleFeature();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleFeature; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleFeature1195); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFeature"


    // $ANTLR start "ruleFeature"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:536:1: ruleFeature returns [EObject current=null] : (this_Property_0= ruleProperty | this_Operation_1= ruleOperation ) ;
    public final EObject ruleFeature() throws RecognitionException {
        EObject current = null;

        EObject this_Property_0 = null;

        EObject this_Operation_1 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:539:28: ( (this_Property_0= ruleProperty | this_Operation_1= ruleOperation ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:540:1: (this_Property_0= ruleProperty | this_Operation_1= ruleOperation )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:540:1: (this_Property_0= ruleProperty | this_Operation_1= ruleOperation )
            int alt9=2;
            switch ( input.LA(1) ) {
            case 92:
                {
                int LA9_1 = input.LA(2);

                if ( (LA9_1==24||LA9_1==26) ) {
                    alt9=1;
                }
                else if ( (LA9_1==27) ) {
                    alt9=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 9, 1, input);

                    throw nvae;
                }
                }
                break;
            case 93:
                {
                int LA9_2 = input.LA(2);

                if ( (LA9_2==24||LA9_2==26) ) {
                    alt9=1;
                }
                else if ( (LA9_2==27) ) {
                    alt9=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 9, 2, input);

                    throw nvae;
                }
                }
                break;
            case 94:
                {
                int LA9_3 = input.LA(2);

                if ( (LA9_3==27) ) {
                    alt9=2;
                }
                else if ( (LA9_3==24||LA9_3==26) ) {
                    alt9=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 9, 3, input);

                    throw nvae;
                }
                }
                break;
            case 23:
                {
                alt9=2;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 9, 0, input);

                throw nvae;
            }

            switch (alt9) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:541:5: this_Property_0= ruleProperty
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getFeatureAccess().getPropertyParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleProperty_in_ruleFeature1242);
                    this_Property_0=ruleProperty();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Property_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:551:5: this_Operation_1= ruleOperation
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getFeatureAccess().getOperationParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleOperation_in_ruleFeature1269);
                    this_Operation_1=ruleOperation();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Operation_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFeature"


    // $ANTLR start "entryRuleProperty"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:567:1: entryRuleProperty returns [EObject current=null] : iv_ruleProperty= ruleProperty EOF ;
    public final EObject entryRuleProperty() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleProperty = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:568:2: (iv_ruleProperty= ruleProperty EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:569:2: iv_ruleProperty= ruleProperty EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPropertyRule()); 
            }
            pushFollow(FOLLOW_ruleProperty_in_entryRuleProperty1304);
            iv_ruleProperty=ruleProperty();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleProperty; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleProperty1314); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleProperty"


    // $ANTLR start "ruleProperty"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:576:1: ruleProperty returns [EObject current=null] : (this_Variable_0= ruleVariable | this_Value_1= ruleValue ) ;
    public final EObject ruleProperty() throws RecognitionException {
        EObject current = null;

        EObject this_Variable_0 = null;

        EObject this_Value_1 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:579:28: ( (this_Variable_0= ruleVariable | this_Value_1= ruleValue ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:580:1: (this_Variable_0= ruleVariable | this_Value_1= ruleValue )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:580:1: (this_Variable_0= ruleVariable | this_Value_1= ruleValue )
            int alt10=2;
            switch ( input.LA(1) ) {
            case 92:
                {
                int LA10_1 = input.LA(2);

                if ( (LA10_1==26) ) {
                    alt10=2;
                }
                else if ( (LA10_1==24) ) {
                    alt10=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 10, 1, input);

                    throw nvae;
                }
                }
                break;
            case 93:
                {
                int LA10_2 = input.LA(2);

                if ( (LA10_2==26) ) {
                    alt10=2;
                }
                else if ( (LA10_2==24) ) {
                    alt10=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 10, 2, input);

                    throw nvae;
                }
                }
                break;
            case 94:
                {
                int LA10_3 = input.LA(2);

                if ( (LA10_3==24) ) {
                    alt10=1;
                }
                else if ( (LA10_3==26) ) {
                    alt10=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 10, 3, input);

                    throw nvae;
                }
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 10, 0, input);

                throw nvae;
            }

            switch (alt10) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:581:5: this_Variable_0= ruleVariable
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getPropertyAccess().getVariableParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleVariable_in_ruleProperty1361);
                    this_Variable_0=ruleVariable();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Variable_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:591:5: this_Value_1= ruleValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getPropertyAccess().getValueParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleValue_in_ruleProperty1388);
                    this_Value_1=ruleValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Value_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleProperty"


    // $ANTLR start "entryRuleVariable"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:607:1: entryRuleVariable returns [EObject current=null] : iv_ruleVariable= ruleVariable EOF ;
    public final EObject entryRuleVariable() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVariable = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:608:2: (iv_ruleVariable= ruleVariable EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:609:2: iv_ruleVariable= ruleVariable EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getVariableRule()); 
            }
            pushFollow(FOLLOW_ruleVariable_in_entryRuleVariable1423);
            iv_ruleVariable=ruleVariable();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleVariable; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleVariable1433); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVariable"


    // $ANTLR start "ruleVariable"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:616:1: ruleVariable returns [EObject current=null] : ( ( (lv_visibility_0_0= ruleVisibility ) ) otherlv_1= 'var' ( (lv_name_2_0= ruleValidID ) ) otherlv_3= ':' ( (lv_type_4_0= ruleJvmTypeReference ) ) ) ;
    public final EObject ruleVariable() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Enumerator lv_visibility_0_0 = null;

        AntlrDatatypeRuleToken lv_name_2_0 = null;

        EObject lv_type_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:619:28: ( ( ( (lv_visibility_0_0= ruleVisibility ) ) otherlv_1= 'var' ( (lv_name_2_0= ruleValidID ) ) otherlv_3= ':' ( (lv_type_4_0= ruleJvmTypeReference ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:620:1: ( ( (lv_visibility_0_0= ruleVisibility ) ) otherlv_1= 'var' ( (lv_name_2_0= ruleValidID ) ) otherlv_3= ':' ( (lv_type_4_0= ruleJvmTypeReference ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:620:1: ( ( (lv_visibility_0_0= ruleVisibility ) ) otherlv_1= 'var' ( (lv_name_2_0= ruleValidID ) ) otherlv_3= ':' ( (lv_type_4_0= ruleJvmTypeReference ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:620:2: ( (lv_visibility_0_0= ruleVisibility ) ) otherlv_1= 'var' ( (lv_name_2_0= ruleValidID ) ) otherlv_3= ':' ( (lv_type_4_0= ruleJvmTypeReference ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:620:2: ( (lv_visibility_0_0= ruleVisibility ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:621:1: (lv_visibility_0_0= ruleVisibility )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:621:1: (lv_visibility_0_0= ruleVisibility )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:622:3: lv_visibility_0_0= ruleVisibility
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getVariableAccess().getVisibilityVisibilityEnumRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleVisibility_in_ruleVariable1479);
            lv_visibility_0_0=ruleVisibility();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getVariableRule());
              	        }
                     		add(
                     			current, 
                     			"visibility",
                      		lv_visibility_0_0, 
                      		"Visibility");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleVariable1491); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getVariableAccess().getVarKeyword_1());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:642:1: ( (lv_name_2_0= ruleValidID ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:643:1: (lv_name_2_0= ruleValidID )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:643:1: (lv_name_2_0= ruleValidID )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:644:3: lv_name_2_0= ruleValidID
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getVariableAccess().getNameValidIDParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleValidID_in_ruleVariable1512);
            lv_name_2_0=ruleValidID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getVariableRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_2_0, 
                      		"ValidID");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,25,FOLLOW_25_in_ruleVariable1524); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getVariableAccess().getColonKeyword_3());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:664:1: ( (lv_type_4_0= ruleJvmTypeReference ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:665:1: (lv_type_4_0= ruleJvmTypeReference )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:665:1: (lv_type_4_0= ruleJvmTypeReference )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:666:3: lv_type_4_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getVariableAccess().getTypeJvmTypeReferenceParserRuleCall_4_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleVariable1545);
            lv_type_4_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getVariableRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_4_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVariable"


    // $ANTLR start "entryRuleValue"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:690:1: entryRuleValue returns [EObject current=null] : iv_ruleValue= ruleValue EOF ;
    public final EObject entryRuleValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleValue = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:691:2: (iv_ruleValue= ruleValue EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:692:2: iv_ruleValue= ruleValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getValueRule()); 
            }
            pushFollow(FOLLOW_ruleValue_in_entryRuleValue1581);
            iv_ruleValue=ruleValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleValue1591); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleValue"


    // $ANTLR start "ruleValue"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:699:1: ruleValue returns [EObject current=null] : ( ( (lv_visibility_0_0= ruleVisibility ) ) otherlv_1= 'val' ( (lv_name_2_0= ruleValidID ) ) otherlv_3= ':' ( (lv_type_4_0= ruleJvmTypeReference ) ) ) ;
    public final EObject ruleValue() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Enumerator lv_visibility_0_0 = null;

        AntlrDatatypeRuleToken lv_name_2_0 = null;

        EObject lv_type_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:702:28: ( ( ( (lv_visibility_0_0= ruleVisibility ) ) otherlv_1= 'val' ( (lv_name_2_0= ruleValidID ) ) otherlv_3= ':' ( (lv_type_4_0= ruleJvmTypeReference ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:703:1: ( ( (lv_visibility_0_0= ruleVisibility ) ) otherlv_1= 'val' ( (lv_name_2_0= ruleValidID ) ) otherlv_3= ':' ( (lv_type_4_0= ruleJvmTypeReference ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:703:1: ( ( (lv_visibility_0_0= ruleVisibility ) ) otherlv_1= 'val' ( (lv_name_2_0= ruleValidID ) ) otherlv_3= ':' ( (lv_type_4_0= ruleJvmTypeReference ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:703:2: ( (lv_visibility_0_0= ruleVisibility ) ) otherlv_1= 'val' ( (lv_name_2_0= ruleValidID ) ) otherlv_3= ':' ( (lv_type_4_0= ruleJvmTypeReference ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:703:2: ( (lv_visibility_0_0= ruleVisibility ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:704:1: (lv_visibility_0_0= ruleVisibility )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:704:1: (lv_visibility_0_0= ruleVisibility )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:705:3: lv_visibility_0_0= ruleVisibility
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getValueAccess().getVisibilityVisibilityEnumRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleVisibility_in_ruleValue1637);
            lv_visibility_0_0=ruleVisibility();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getValueRule());
              	        }
                     		add(
                     			current, 
                     			"visibility",
                      		lv_visibility_0_0, 
                      		"Visibility");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,26,FOLLOW_26_in_ruleValue1649); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getValueAccess().getValKeyword_1());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:725:1: ( (lv_name_2_0= ruleValidID ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:726:1: (lv_name_2_0= ruleValidID )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:726:1: (lv_name_2_0= ruleValidID )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:727:3: lv_name_2_0= ruleValidID
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getValueAccess().getNameValidIDParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleValidID_in_ruleValue1670);
            lv_name_2_0=ruleValidID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getValueRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_2_0, 
                      		"ValidID");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,25,FOLLOW_25_in_ruleValue1682); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getValueAccess().getColonKeyword_3());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:747:1: ( (lv_type_4_0= ruleJvmTypeReference ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:748:1: (lv_type_4_0= ruleJvmTypeReference )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:748:1: (lv_type_4_0= ruleJvmTypeReference )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:749:3: lv_type_4_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getValueAccess().getTypeJvmTypeReferenceParserRuleCall_4_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleValue1703);
            lv_type_4_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getValueRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_4_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleValue"


    // $ANTLR start "entryRuleOperation"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:773:1: entryRuleOperation returns [EObject current=null] : iv_ruleOperation= ruleOperation EOF ;
    public final EObject entryRuleOperation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOperation = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:774:2: (iv_ruleOperation= ruleOperation EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:775:2: iv_ruleOperation= ruleOperation EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOperationRule()); 
            }
            pushFollow(FOLLOW_ruleOperation_in_entryRuleOperation1739);
            iv_ruleOperation=ruleOperation();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOperation; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOperation1749); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOperation"


    // $ANTLR start "ruleOperation"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:782:1: ruleOperation returns [EObject current=null] : ( ( (lv_annotations_0_0= ruleTestAnnotation ) )? ( (lv_visibility_1_0= ruleVisibility ) ) otherlv_2= 'op' ( (lv_name_3_0= ruleValidID ) ) otherlv_4= '(' ( ( (lv_params_5_0= ruleFullJvmFormalParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_8= ')' otherlv_9= ':' ( (lv_type_10_0= ruleJvmTypeReference ) ) ( (lv_body_11_0= ruleXBlockExpression ) ) ) ;
    public final EObject ruleOperation() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        AntlrDatatypeRuleToken lv_annotations_0_0 = null;

        Enumerator lv_visibility_1_0 = null;

        AntlrDatatypeRuleToken lv_name_3_0 = null;

        EObject lv_params_5_0 = null;

        EObject lv_params_7_0 = null;

        EObject lv_type_10_0 = null;

        EObject lv_body_11_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:785:28: ( ( ( (lv_annotations_0_0= ruleTestAnnotation ) )? ( (lv_visibility_1_0= ruleVisibility ) ) otherlv_2= 'op' ( (lv_name_3_0= ruleValidID ) ) otherlv_4= '(' ( ( (lv_params_5_0= ruleFullJvmFormalParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_8= ')' otherlv_9= ':' ( (lv_type_10_0= ruleJvmTypeReference ) ) ( (lv_body_11_0= ruleXBlockExpression ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:786:1: ( ( (lv_annotations_0_0= ruleTestAnnotation ) )? ( (lv_visibility_1_0= ruleVisibility ) ) otherlv_2= 'op' ( (lv_name_3_0= ruleValidID ) ) otherlv_4= '(' ( ( (lv_params_5_0= ruleFullJvmFormalParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_8= ')' otherlv_9= ':' ( (lv_type_10_0= ruleJvmTypeReference ) ) ( (lv_body_11_0= ruleXBlockExpression ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:786:1: ( ( (lv_annotations_0_0= ruleTestAnnotation ) )? ( (lv_visibility_1_0= ruleVisibility ) ) otherlv_2= 'op' ( (lv_name_3_0= ruleValidID ) ) otherlv_4= '(' ( ( (lv_params_5_0= ruleFullJvmFormalParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_8= ')' otherlv_9= ':' ( (lv_type_10_0= ruleJvmTypeReference ) ) ( (lv_body_11_0= ruleXBlockExpression ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:786:2: ( (lv_annotations_0_0= ruleTestAnnotation ) )? ( (lv_visibility_1_0= ruleVisibility ) ) otherlv_2= 'op' ( (lv_name_3_0= ruleValidID ) ) otherlv_4= '(' ( ( (lv_params_5_0= ruleFullJvmFormalParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_8= ')' otherlv_9= ':' ( (lv_type_10_0= ruleJvmTypeReference ) ) ( (lv_body_11_0= ruleXBlockExpression ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:786:2: ( (lv_annotations_0_0= ruleTestAnnotation ) )?
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==23) ) {
                alt11=1;
            }
            switch (alt11) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:787:1: (lv_annotations_0_0= ruleTestAnnotation )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:787:1: (lv_annotations_0_0= ruleTestAnnotation )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:788:3: lv_annotations_0_0= ruleTestAnnotation
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getOperationAccess().getAnnotationsTestAnnotationParserRuleCall_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleTestAnnotation_in_ruleOperation1795);
                    lv_annotations_0_0=ruleTestAnnotation();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getOperationRule());
                      	        }
                             		add(
                             			current, 
                             			"annotations",
                              		lv_annotations_0_0, 
                              		"TestAnnotation");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:804:3: ( (lv_visibility_1_0= ruleVisibility ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:805:1: (lv_visibility_1_0= ruleVisibility )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:805:1: (lv_visibility_1_0= ruleVisibility )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:806:3: lv_visibility_1_0= ruleVisibility
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getOperationAccess().getVisibilityVisibilityEnumRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleVisibility_in_ruleOperation1817);
            lv_visibility_1_0=ruleVisibility();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getOperationRule());
              	        }
                     		add(
                     			current, 
                     			"visibility",
                      		lv_visibility_1_0, 
                      		"Visibility");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,27,FOLLOW_27_in_ruleOperation1829); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getOperationAccess().getOpKeyword_2());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:826:1: ( (lv_name_3_0= ruleValidID ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:827:1: (lv_name_3_0= ruleValidID )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:827:1: (lv_name_3_0= ruleValidID )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:828:3: lv_name_3_0= ruleValidID
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getOperationAccess().getNameValidIDParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleValidID_in_ruleOperation1850);
            lv_name_3_0=ruleValidID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getOperationRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_3_0, 
                      		"ValidID");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,28,FOLLOW_28_in_ruleOperation1862); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getOperationAccess().getLeftParenthesisKeyword_4());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:848:1: ( ( (lv_params_5_0= ruleFullJvmFormalParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleFullJvmFormalParameter ) ) )* )?
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==RULE_ID||LA13_0==28||LA13_0==48) ) {
                alt13=1;
            }
            switch (alt13) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:848:2: ( (lv_params_5_0= ruleFullJvmFormalParameter ) ) (otherlv_6= ',' ( (lv_params_7_0= ruleFullJvmFormalParameter ) ) )*
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:848:2: ( (lv_params_5_0= ruleFullJvmFormalParameter ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:849:1: (lv_params_5_0= ruleFullJvmFormalParameter )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:849:1: (lv_params_5_0= ruleFullJvmFormalParameter )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:850:3: lv_params_5_0= ruleFullJvmFormalParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getOperationAccess().getParamsFullJvmFormalParameterParserRuleCall_5_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleFullJvmFormalParameter_in_ruleOperation1884);
                    lv_params_5_0=ruleFullJvmFormalParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getOperationRule());
                      	        }
                             		add(
                             			current, 
                             			"params",
                              		lv_params_5_0, 
                              		"FullJvmFormalParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:866:2: (otherlv_6= ',' ( (lv_params_7_0= ruleFullJvmFormalParameter ) ) )*
                    loop12:
                    do {
                        int alt12=2;
                        int LA12_0 = input.LA(1);

                        if ( (LA12_0==29) ) {
                            alt12=1;
                        }


                        switch (alt12) {
                    	case 1 :
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:866:4: otherlv_6= ',' ( (lv_params_7_0= ruleFullJvmFormalParameter ) )
                    	    {
                    	    otherlv_6=(Token)match(input,29,FOLLOW_29_in_ruleOperation1897); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_6, grammarAccess.getOperationAccess().getCommaKeyword_5_1_0());
                    	          
                    	    }
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:870:1: ( (lv_params_7_0= ruleFullJvmFormalParameter ) )
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:871:1: (lv_params_7_0= ruleFullJvmFormalParameter )
                    	    {
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:871:1: (lv_params_7_0= ruleFullJvmFormalParameter )
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:872:3: lv_params_7_0= ruleFullJvmFormalParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getOperationAccess().getParamsFullJvmFormalParameterParserRuleCall_5_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleFullJvmFormalParameter_in_ruleOperation1918);
                    	    lv_params_7_0=ruleFullJvmFormalParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getOperationRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"params",
                    	              		lv_params_7_0, 
                    	              		"FullJvmFormalParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop12;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_8=(Token)match(input,30,FOLLOW_30_in_ruleOperation1934); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_8, grammarAccess.getOperationAccess().getRightParenthesisKeyword_6());
                  
            }
            otherlv_9=(Token)match(input,25,FOLLOW_25_in_ruleOperation1946); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_9, grammarAccess.getOperationAccess().getColonKeyword_7());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:896:1: ( (lv_type_10_0= ruleJvmTypeReference ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:897:1: (lv_type_10_0= ruleJvmTypeReference )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:897:1: (lv_type_10_0= ruleJvmTypeReference )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:898:3: lv_type_10_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getOperationAccess().getTypeJvmTypeReferenceParserRuleCall_8_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleOperation1967);
            lv_type_10_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getOperationRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_10_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:914:2: ( (lv_body_11_0= ruleXBlockExpression ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:915:1: (lv_body_11_0= ruleXBlockExpression )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:915:1: (lv_body_11_0= ruleXBlockExpression )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:916:3: lv_body_11_0= ruleXBlockExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getOperationAccess().getBodyXBlockExpressionParserRuleCall_9_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleOperation1988);
            lv_body_11_0=ruleXBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getOperationRule());
              	        }
                     		set(
                     			current, 
                     			"body",
                      		lv_body_11_0, 
                      		"XBlockExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOperation"


    // $ANTLR start "entryRuleXExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:940:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
    public final EObject entryRuleXExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:941:2: (iv_ruleXExpression= ruleXExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:942:2: iv_ruleXExpression= ruleXExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXExpression_in_entryRuleXExpression2024);
            iv_ruleXExpression=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpression2034); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXExpression"


    // $ANTLR start "ruleXExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:949:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
    public final EObject ruleXExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XAssignment_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:952:28: (this_XAssignment_0= ruleXAssignment )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:954:5: this_XAssignment_0= ruleXAssignment
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
                  
            }
            pushFollow(FOLLOW_ruleXAssignment_in_ruleXExpression2080);
            this_XAssignment_0=ruleXAssignment();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XAssignment_0; 
                      afterParserOrEnumRuleCall();
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXExpression"


    // $ANTLR start "entryRuleXAssignment"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:970:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
    public final EObject entryRuleXAssignment() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXAssignment = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:971:2: (iv_ruleXAssignment= ruleXAssignment EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:972:2: iv_ruleXAssignment= ruleXAssignment EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXAssignmentRule()); 
            }
            pushFollow(FOLLOW_ruleXAssignment_in_entryRuleXAssignment2114);
            iv_ruleXAssignment=ruleXAssignment();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXAssignment; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXAssignment2124); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXAssignment"


    // $ANTLR start "ruleXAssignment"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:979:1: ruleXAssignment returns [EObject current=null] : ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) ;
    public final EObject ruleXAssignment() throws RecognitionException {
        EObject current = null;

        EObject lv_value_3_0 = null;

        EObject this_XOrExpression_4 = null;

        EObject lv_rightOperand_7_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:982:28: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:983:1: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:983:1: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
            int alt15=2;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                int LA15_1 = input.LA(2);

                if ( (LA15_1==EOF||(LA15_1>=RULE_ID && LA15_1<=RULE_DECIMAL)||(LA15_1>=14 && LA15_1<=15)||(LA15_1>=17 && LA15_1<=18)||(LA15_1>=24 && LA15_1<=26)||(LA15_1>=28 && LA15_1<=30)||(LA15_1>=32 && LA15_1<=63)||(LA15_1>=65 && LA15_1<=89)) ) {
                    alt15=2;
                }
                else if ( (LA15_1==31) ) {
                    alt15=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 15, 1, input);

                    throw nvae;
                }
                }
                break;
            case 74:
                {
                int LA15_2 = input.LA(2);

                if ( (LA15_2==EOF||(LA15_2>=RULE_ID && LA15_2<=RULE_DECIMAL)||(LA15_2>=14 && LA15_2<=15)||(LA15_2>=17 && LA15_2<=18)||(LA15_2>=24 && LA15_2<=26)||(LA15_2>=28 && LA15_2<=30)||(LA15_2>=32 && LA15_2<=63)||(LA15_2>=65 && LA15_2<=78)||(LA15_2>=80 && LA15_2<=89)) ) {
                    alt15=2;
                }
                else if ( (LA15_2==31) ) {
                    alt15=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 15, 2, input);

                    throw nvae;
                }
                }
                break;
            case 75:
                {
                int LA15_3 = input.LA(2);

                if ( (LA15_3==31) ) {
                    alt15=1;
                }
                else if ( (LA15_3==EOF||(LA15_3>=RULE_ID && LA15_3<=RULE_DECIMAL)||(LA15_3>=14 && LA15_3<=15)||(LA15_3>=17 && LA15_3<=18)||(LA15_3>=24 && LA15_3<=26)||(LA15_3>=28 && LA15_3<=30)||(LA15_3>=32 && LA15_3<=63)||(LA15_3>=65 && LA15_3<=78)||(LA15_3>=80 && LA15_3<=89)) ) {
                    alt15=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 15, 3, input);

                    throw nvae;
                }
                }
                break;
            case 76:
                {
                int LA15_4 = input.LA(2);

                if ( (LA15_4==31) ) {
                    alt15=1;
                }
                else if ( (LA15_4==EOF||(LA15_4>=RULE_ID && LA15_4<=RULE_DECIMAL)||(LA15_4>=14 && LA15_4<=15)||(LA15_4>=17 && LA15_4<=18)||(LA15_4>=24 && LA15_4<=26)||(LA15_4>=28 && LA15_4<=30)||(LA15_4>=32 && LA15_4<=63)||(LA15_4>=65 && LA15_4<=78)||(LA15_4>=80 && LA15_4<=89)) ) {
                    alt15=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 15, 4, input);

                    throw nvae;
                }
                }
                break;
            case 77:
                {
                int LA15_5 = input.LA(2);

                if ( (LA15_5==EOF||(LA15_5>=RULE_ID && LA15_5<=RULE_DECIMAL)||(LA15_5>=14 && LA15_5<=15)||(LA15_5>=17 && LA15_5<=18)||(LA15_5>=24 && LA15_5<=26)||(LA15_5>=28 && LA15_5<=30)||(LA15_5>=32 && LA15_5<=63)||(LA15_5>=65 && LA15_5<=78)||(LA15_5>=80 && LA15_5<=89)) ) {
                    alt15=2;
                }
                else if ( (LA15_5==31) ) {
                    alt15=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 15, 5, input);

                    throw nvae;
                }
                }
                break;
            case RULE_STRING:
            case RULE_HEX:
            case RULE_INT:
            case RULE_DECIMAL:
            case 14:
            case 28:
            case 44:
            case 52:
            case 53:
            case 57:
            case 61:
            case 62:
            case 66:
            case 68:
            case 71:
            case 72:
            case 73:
            case 78:
            case 80:
            case 81:
            case 82:
            case 83:
            case 84:
            case 85:
            case 86:
            case 87:
                {
                alt15=2;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 15, 0, input);

                throw nvae;
            }

            switch (alt15) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:983:2: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:983:2: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:983:3: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:983:3: ()
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:984:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
                                  current);
                          
                    }

                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:989:2: ( ( ruleFeatureCallID ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:990:1: ( ruleFeatureCallID )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:990:1: ( ruleFeatureCallID )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:991:3: ruleFeatureCallID
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXAssignmentRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleFeatureCallID_in_ruleXAssignment2182);
                    ruleFeatureCallID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleOpSingleAssign_in_ruleXAssignment2198);
                    ruleOpSingleAssign();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              afterParserOrEnumRuleCall();
                          
                    }
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1012:1: ( (lv_value_3_0= ruleXAssignment ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1013:1: (lv_value_3_0= ruleXAssignment )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1013:1: (lv_value_3_0= ruleXAssignment )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1014:3: lv_value_3_0= ruleXAssignment
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment2218);
                    lv_value_3_0=ruleXAssignment();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXAssignmentRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_3_0, 
                              		"XAssignment");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1031:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1031:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1032:5: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXOrExpression_in_ruleXAssignment2248);
                    this_XOrExpression_4=ruleXOrExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XOrExpression_4; 
                              afterParserOrEnumRuleCall();
                          
                    }
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1040:1: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
                    int alt14=2;
                    int LA14_0 = input.LA(1);

                    if ( (LA14_0==32) ) {
                        int LA14_1 = input.LA(2);

                        if ( (synpred1_InternalMyDsl()) ) {
                            alt14=1;
                        }
                    }
                    else if ( (LA14_0==33) ) {
                        int LA14_2 = input.LA(2);

                        if ( (synpred1_InternalMyDsl()) ) {
                            alt14=1;
                        }
                    }
                    switch (alt14) {
                        case 1 :
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1040:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1040:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1040:3: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1045:6: ( () ( ( ruleOpMultiAssign ) ) )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1045:7: () ( ( ruleOpMultiAssign ) )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1045:7: ()
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1046:5: 
                            {
                            if ( state.backtracking==0 ) {

                                      current = forceCreateModelElementAndSet(
                                          grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
                                          current);
                                  
                            }

                            }

                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1051:2: ( ( ruleOpMultiAssign ) )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1052:1: ( ruleOpMultiAssign )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1052:1: ( ruleOpMultiAssign )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1053:3: ruleOpMultiAssign
                            {
                            if ( state.backtracking==0 ) {

                              			if (current==null) {
                              	            current = createModelElement(grammarAccess.getXAssignmentRule());
                              	        }
                                      
                            }
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleOpMultiAssign_in_ruleXAssignment2301);
                            ruleOpMultiAssign();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {
                               
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }


                            }

                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1066:4: ( (lv_rightOperand_7_0= ruleXAssignment ) )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1067:1: (lv_rightOperand_7_0= ruleXAssignment )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1067:1: (lv_rightOperand_7_0= ruleXAssignment )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1068:3: lv_rightOperand_7_0= ruleXAssignment
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment2324);
                            lv_rightOperand_7_0=ruleXAssignment();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXAssignmentRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"rightOperand",
                                      		lv_rightOperand_7_0, 
                                      		"XAssignment");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXAssignment"


    // $ANTLR start "entryRuleOpSingleAssign"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1092:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
    public final String entryRuleOpSingleAssign() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpSingleAssign = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1093:2: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1094:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpSingleAssignRule()); 
            }
            pushFollow(FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign2364);
            iv_ruleOpSingleAssign=ruleOpSingleAssign();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpSingleAssign.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpSingleAssign2375); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpSingleAssign"


    // $ANTLR start "ruleOpSingleAssign"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1101:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
    public final AntlrDatatypeRuleToken ruleOpSingleAssign() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1104:28: (kw= '=' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1106:2: kw= '='
            {
            kw=(Token)match(input,31,FOLLOW_31_in_ruleOpSingleAssign2412); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpSingleAssign"


    // $ANTLR start "entryRuleOpMultiAssign"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1119:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
    public final String entryRuleOpMultiAssign() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpMultiAssign = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1120:2: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1121:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpMultiAssignRule()); 
            }
            pushFollow(FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign2452);
            iv_ruleOpMultiAssign=ruleOpMultiAssign();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpMultiAssign.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMultiAssign2463); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpMultiAssign"


    // $ANTLR start "ruleOpMultiAssign"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1128:1: ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+=' | kw= '-=' ) ;
    public final AntlrDatatypeRuleToken ruleOpMultiAssign() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1131:28: ( (kw= '+=' | kw= '-=' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1132:1: (kw= '+=' | kw= '-=' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1132:1: (kw= '+=' | kw= '-=' )
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==32) ) {
                alt16=1;
            }
            else if ( (LA16_0==33) ) {
                alt16=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 16, 0, input);

                throw nvae;
            }
            switch (alt16) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1133:2: kw= '+='
                    {
                    kw=(Token)match(input,32,FOLLOW_32_in_ruleOpMultiAssign2501); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1140:2: kw= '-='
                    {
                    kw=(Token)match(input,33,FOLLOW_33_in_ruleOpMultiAssign2520); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpMultiAssign"


    // $ANTLR start "entryRuleXOrExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1153:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
    public final EObject entryRuleXOrExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXOrExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1154:2: (iv_ruleXOrExpression= ruleXOrExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1155:2: iv_ruleXOrExpression= ruleXOrExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXOrExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression2560);
            iv_ruleXOrExpression=ruleXOrExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXOrExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXOrExpression2570); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXOrExpression"


    // $ANTLR start "ruleXOrExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1162:1: ruleXOrExpression returns [EObject current=null] : (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) ;
    public final EObject ruleXOrExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XAndExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1165:28: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1166:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1166:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1167:5: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXAndExpression_in_ruleXOrExpression2617);
            this_XAndExpression_0=ruleXAndExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XAndExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1175:1: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
            loop17:
            do {
                int alt17=2;
                int LA17_0 = input.LA(1);

                if ( (LA17_0==34) ) {
                    int LA17_2 = input.LA(2);

                    if ( (synpred2_InternalMyDsl()) ) {
                        alt17=1;
                    }


                }


                switch (alt17) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1175:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1175:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1175:3: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1180:6: ( () ( ( ruleOpOr ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1180:7: () ( ( ruleOpOr ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1180:7: ()
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1181:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1186:2: ( ( ruleOpOr ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1187:1: ( ruleOpOr )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1187:1: ( ruleOpOr )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1188:3: ruleOpOr
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXOrExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpOr_in_ruleXOrExpression2670);
            	    ruleOpOr();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1201:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1202:1: (lv_rightOperand_3_0= ruleXAndExpression )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1202:1: (lv_rightOperand_3_0= ruleXAndExpression )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1203:3: lv_rightOperand_3_0= ruleXAndExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXAndExpression_in_ruleXOrExpression2693);
            	    lv_rightOperand_3_0=ruleXAndExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXOrExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XAndExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop17;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXOrExpression"


    // $ANTLR start "entryRuleOpOr"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1227:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
    public final String entryRuleOpOr() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpOr = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1228:2: (iv_ruleOpOr= ruleOpOr EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1229:2: iv_ruleOpOr= ruleOpOr EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpOrRule()); 
            }
            pushFollow(FOLLOW_ruleOpOr_in_entryRuleOpOr2732);
            iv_ruleOpOr=ruleOpOr();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpOr.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOr2743); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpOr"


    // $ANTLR start "ruleOpOr"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1236:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
    public final AntlrDatatypeRuleToken ruleOpOr() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1239:28: (kw= '||' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1241:2: kw= '||'
            {
            kw=(Token)match(input,34,FOLLOW_34_in_ruleOpOr2780); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpOr"


    // $ANTLR start "entryRuleXAndExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1254:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
    public final EObject entryRuleXAndExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXAndExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1255:2: (iv_ruleXAndExpression= ruleXAndExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1256:2: iv_ruleXAndExpression= ruleXAndExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXAndExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression2819);
            iv_ruleXAndExpression=ruleXAndExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXAndExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXAndExpression2829); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXAndExpression"


    // $ANTLR start "ruleXAndExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1263:1: ruleXAndExpression returns [EObject current=null] : (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) ;
    public final EObject ruleXAndExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XEqualityExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1266:28: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1267:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1267:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1268:5: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression2876);
            this_XEqualityExpression_0=ruleXEqualityExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XEqualityExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1276:1: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
            loop18:
            do {
                int alt18=2;
                int LA18_0 = input.LA(1);

                if ( (LA18_0==35) ) {
                    int LA18_2 = input.LA(2);

                    if ( (synpred3_InternalMyDsl()) ) {
                        alt18=1;
                    }


                }


                switch (alt18) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1276:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1276:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1276:3: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1281:6: ( () ( ( ruleOpAnd ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1281:7: () ( ( ruleOpAnd ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1281:7: ()
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1282:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1287:2: ( ( ruleOpAnd ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1288:1: ( ruleOpAnd )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1288:1: ( ruleOpAnd )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1289:3: ruleOpAnd
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXAndExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpAnd_in_ruleXAndExpression2929);
            	    ruleOpAnd();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1302:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1303:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1303:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1304:3: lv_rightOperand_3_0= ruleXEqualityExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression2952);
            	    lv_rightOperand_3_0=ruleXEqualityExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XEqualityExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop18;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXAndExpression"


    // $ANTLR start "entryRuleOpAnd"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1328:1: entryRuleOpAnd returns [String current=null] : iv_ruleOpAnd= ruleOpAnd EOF ;
    public final String entryRuleOpAnd() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpAnd = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1329:2: (iv_ruleOpAnd= ruleOpAnd EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1330:2: iv_ruleOpAnd= ruleOpAnd EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpAndRule()); 
            }
            pushFollow(FOLLOW_ruleOpAnd_in_entryRuleOpAnd2991);
            iv_ruleOpAnd=ruleOpAnd();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpAnd.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAnd3002); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpAnd"


    // $ANTLR start "ruleOpAnd"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1337:1: ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '&&' ;
    public final AntlrDatatypeRuleToken ruleOpAnd() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1340:28: (kw= '&&' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1342:2: kw= '&&'
            {
            kw=(Token)match(input,35,FOLLOW_35_in_ruleOpAnd3039); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpAnd"


    // $ANTLR start "entryRuleXEqualityExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1355:1: entryRuleXEqualityExpression returns [EObject current=null] : iv_ruleXEqualityExpression= ruleXEqualityExpression EOF ;
    public final EObject entryRuleXEqualityExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXEqualityExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1356:2: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1357:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression3078);
            iv_ruleXEqualityExpression=ruleXEqualityExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXEqualityExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXEqualityExpression3088); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXEqualityExpression"


    // $ANTLR start "ruleXEqualityExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1364:1: ruleXEqualityExpression returns [EObject current=null] : (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) ;
    public final EObject ruleXEqualityExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XRelationalExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1367:28: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1368:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1368:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1369:5: this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression3135);
            this_XRelationalExpression_0=ruleXRelationalExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XRelationalExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1377:1: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
            loop19:
            do {
                int alt19=2;
                switch ( input.LA(1) ) {
                case 36:
                    {
                    int LA19_2 = input.LA(2);

                    if ( (synpred4_InternalMyDsl()) ) {
                        alt19=1;
                    }


                    }
                    break;
                case 37:
                    {
                    int LA19_3 = input.LA(2);

                    if ( (synpred4_InternalMyDsl()) ) {
                        alt19=1;
                    }


                    }
                    break;
                case 38:
                    {
                    int LA19_4 = input.LA(2);

                    if ( (synpred4_InternalMyDsl()) ) {
                        alt19=1;
                    }


                    }
                    break;
                case 39:
                    {
                    int LA19_5 = input.LA(2);

                    if ( (synpred4_InternalMyDsl()) ) {
                        alt19=1;
                    }


                    }
                    break;

                }

                switch (alt19) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1377:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1377:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1377:3: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1382:6: ( () ( ( ruleOpEquality ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1382:7: () ( ( ruleOpEquality ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1382:7: ()
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1383:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1388:2: ( ( ruleOpEquality ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1389:1: ( ruleOpEquality )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1389:1: ( ruleOpEquality )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1390:3: ruleOpEquality
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXEqualityExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpEquality_in_ruleXEqualityExpression3188);
            	    ruleOpEquality();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1403:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1404:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1404:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1405:3: lv_rightOperand_3_0= ruleXRelationalExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression3211);
            	    lv_rightOperand_3_0=ruleXRelationalExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XRelationalExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop19;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXEqualityExpression"


    // $ANTLR start "entryRuleOpEquality"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1429:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
    public final String entryRuleOpEquality() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpEquality = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1430:2: (iv_ruleOpEquality= ruleOpEquality EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1431:2: iv_ruleOpEquality= ruleOpEquality EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpEqualityRule()); 
            }
            pushFollow(FOLLOW_ruleOpEquality_in_entryRuleOpEquality3250);
            iv_ruleOpEquality=ruleOpEquality();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpEquality.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpEquality3261); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpEquality"


    // $ANTLR start "ruleOpEquality"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1438:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) ;
    public final AntlrDatatypeRuleToken ruleOpEquality() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1441:28: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1442:1: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1442:1: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
            int alt20=4;
            switch ( input.LA(1) ) {
            case 36:
                {
                alt20=1;
                }
                break;
            case 37:
                {
                alt20=2;
                }
                break;
            case 38:
                {
                alt20=3;
                }
                break;
            case 39:
                {
                alt20=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 20, 0, input);

                throw nvae;
            }

            switch (alt20) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1443:2: kw= '=='
                    {
                    kw=(Token)match(input,36,FOLLOW_36_in_ruleOpEquality3299); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1450:2: kw= '!='
                    {
                    kw=(Token)match(input,37,FOLLOW_37_in_ruleOpEquality3318); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1457:2: kw= '==='
                    {
                    kw=(Token)match(input,38,FOLLOW_38_in_ruleOpEquality3337); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
                          
                    }

                    }
                    break;
                case 4 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1464:2: kw= '!=='
                    {
                    kw=(Token)match(input,39,FOLLOW_39_in_ruleOpEquality3356); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpEquality"


    // $ANTLR start "entryRuleXRelationalExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1477:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
    public final EObject entryRuleXRelationalExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXRelationalExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1478:2: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1479:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression3396);
            iv_ruleXRelationalExpression=ruleXRelationalExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXRelationalExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXRelationalExpression3406); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXRelationalExpression"


    // $ANTLR start "ruleXRelationalExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1486:1: ruleXRelationalExpression returns [EObject current=null] : (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) ;
    public final EObject ruleXRelationalExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_XOtherOperatorExpression_0 = null;

        EObject lv_type_3_0 = null;

        EObject lv_rightOperand_6_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1489:28: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1490:1: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1490:1: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1491:5: this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression3453);
            this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XOtherOperatorExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1499:1: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
            loop21:
            do {
                int alt21=3;
                switch ( input.LA(1) ) {
                case 43:
                    {
                    int LA21_2 = input.LA(2);

                    if ( (synpred6_InternalMyDsl()) ) {
                        alt21=2;
                    }


                    }
                    break;
                case 44:
                    {
                    int LA21_3 = input.LA(2);

                    if ( (synpred6_InternalMyDsl()) ) {
                        alt21=2;
                    }


                    }
                    break;
                case 40:
                    {
                    int LA21_4 = input.LA(2);

                    if ( (synpred5_InternalMyDsl()) ) {
                        alt21=1;
                    }


                    }
                    break;
                case 41:
                    {
                    int LA21_5 = input.LA(2);

                    if ( (synpred6_InternalMyDsl()) ) {
                        alt21=2;
                    }


                    }
                    break;
                case 42:
                    {
                    int LA21_6 = input.LA(2);

                    if ( (synpred6_InternalMyDsl()) ) {
                        alt21=2;
                    }


                    }
                    break;

                }

                switch (alt21) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1499:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1499:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1499:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1499:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1499:4: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1501:5: ( () otherlv_2= 'instanceof' )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1501:6: () otherlv_2= 'instanceof'
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1501:6: ()
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1502:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    otherlv_2=(Token)match(input,40,FOLLOW_40_in_ruleXRelationalExpression3489); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
            	          
            	    }

            	    }


            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1511:3: ( (lv_type_3_0= ruleJvmTypeReference ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1512:1: (lv_type_3_0= ruleJvmTypeReference )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1512:1: (lv_type_3_0= ruleJvmTypeReference )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1513:3: lv_type_3_0= ruleJvmTypeReference
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXRelationalExpression3512);
            	    lv_type_3_0=ruleJvmTypeReference();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"type",
            	              		lv_type_3_0, 
            	              		"JvmTypeReference");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1530:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1530:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1530:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1530:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1530:8: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1535:6: ( () ( ( ruleOpCompare ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1535:7: () ( ( ruleOpCompare ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1535:7: ()
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1536:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1541:2: ( ( ruleOpCompare ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1542:1: ( ruleOpCompare )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1542:1: ( ruleOpCompare )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1543:3: ruleOpCompare
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXRelationalExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpCompare_in_ruleXRelationalExpression3573);
            	    ruleOpCompare();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1556:4: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1557:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1557:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1558:3: lv_rightOperand_6_0= ruleXOtherOperatorExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression3596);
            	    lv_rightOperand_6_0=ruleXOtherOperatorExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_6_0, 
            	              		"XOtherOperatorExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop21;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXRelationalExpression"


    // $ANTLR start "entryRuleOpCompare"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1582:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
    public final String entryRuleOpCompare() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpCompare = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1583:2: (iv_ruleOpCompare= ruleOpCompare EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1584:2: iv_ruleOpCompare= ruleOpCompare EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpCompareRule()); 
            }
            pushFollow(FOLLOW_ruleOpCompare_in_entryRuleOpCompare3636);
            iv_ruleOpCompare=ruleOpCompare();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpCompare.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpCompare3647); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpCompare"


    // $ANTLR start "ruleOpCompare"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1591:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | kw= '<=' | kw= '>' | kw= '<' ) ;
    public final AntlrDatatypeRuleToken ruleOpCompare() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1594:28: ( (kw= '>=' | kw= '<=' | kw= '>' | kw= '<' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1595:1: (kw= '>=' | kw= '<=' | kw= '>' | kw= '<' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1595:1: (kw= '>=' | kw= '<=' | kw= '>' | kw= '<' )
            int alt22=4;
            switch ( input.LA(1) ) {
            case 41:
                {
                alt22=1;
                }
                break;
            case 42:
                {
                alt22=2;
                }
                break;
            case 43:
                {
                alt22=3;
                }
                break;
            case 44:
                {
                alt22=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 22, 0, input);

                throw nvae;
            }

            switch (alt22) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1596:2: kw= '>='
                    {
                    kw=(Token)match(input,41,FOLLOW_41_in_ruleOpCompare3685); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1603:2: kw= '<='
                    {
                    kw=(Token)match(input,42,FOLLOW_42_in_ruleOpCompare3704); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignEqualsSignKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1610:2: kw= '>'
                    {
                    kw=(Token)match(input,43,FOLLOW_43_in_ruleOpCompare3723); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
                          
                    }

                    }
                    break;
                case 4 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1617:2: kw= '<'
                    {
                    kw=(Token)match(input,44,FOLLOW_44_in_ruleOpCompare3742); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpCompare"


    // $ANTLR start "entryRuleXOtherOperatorExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1630:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
    public final EObject entryRuleXOtherOperatorExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXOtherOperatorExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1631:2: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1632:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression3782);
            iv_ruleXOtherOperatorExpression=ruleXOtherOperatorExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXOtherOperatorExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXOtherOperatorExpression3792); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXOtherOperatorExpression"


    // $ANTLR start "ruleXOtherOperatorExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1639:1: ruleXOtherOperatorExpression returns [EObject current=null] : (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) ;
    public final EObject ruleXOtherOperatorExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XAdditiveExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1642:28: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1643:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1643:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1644:5: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression3839);
            this_XAdditiveExpression_0=ruleXAdditiveExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XAdditiveExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1652:1: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
            loop23:
            do {
                int alt23=2;
                alt23 = dfa23.predict(input);
                switch (alt23) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1652:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1652:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1652:3: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1657:6: ( () ( ( ruleOpOther ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1657:7: () ( ( ruleOpOther ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1657:7: ()
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1658:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1663:2: ( ( ruleOpOther ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1664:1: ( ruleOpOther )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1664:1: ( ruleOpOther )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1665:3: ruleOpOther
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXOtherOperatorExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpOther_in_ruleXOtherOperatorExpression3892);
            	    ruleOpOther();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1678:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1679:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1679:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1680:3: lv_rightOperand_3_0= ruleXAdditiveExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression3915);
            	    lv_rightOperand_3_0=ruleXAdditiveExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXOtherOperatorExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XAdditiveExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop23;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXOtherOperatorExpression"


    // $ANTLR start "entryRuleOpOther"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1704:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
    public final String entryRuleOpOther() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpOther = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1705:2: (iv_ruleOpOther= ruleOpOther EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1706:2: iv_ruleOpOther= ruleOpOther EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpOtherRule()); 
            }
            pushFollow(FOLLOW_ruleOpOther_in_entryRuleOpOther3954);
            iv_ruleOpOther=ruleOpOther();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpOther.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOther3965); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpOther"


    // $ANTLR start "ruleOpOther"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1713:1: ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' ) ) | kw= '<>' | kw= '?:' | kw= '<=>' ) ;
    public final AntlrDatatypeRuleToken ruleOpOther() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1716:28: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' ) ) | kw= '<>' | kw= '?:' | kw= '<=>' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1717:1: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' ) ) | kw= '<>' | kw= '?:' | kw= '<=>' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1717:1: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' ) ) | kw= '<>' | kw= '?:' | kw= '<=>' )
            int alt26=10;
            alt26 = dfa26.predict(input);
            switch (alt26) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1718:2: kw= '->'
                    {
                    kw=(Token)match(input,45,FOLLOW_45_in_ruleOpOther4003); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1725:2: kw= '..<'
                    {
                    kw=(Token)match(input,46,FOLLOW_46_in_ruleOpOther4022); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1731:6: (kw= '>' kw= '..' )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1731:6: (kw= '>' kw= '..' )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1732:2: kw= '>' kw= '..'
                    {
                    kw=(Token)match(input,43,FOLLOW_43_in_ruleOpOther4042); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); 
                          
                    }
                    kw=(Token)match(input,47,FOLLOW_47_in_ruleOpOther4055); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); 
                          
                    }

                    }


                    }
                    break;
                case 4 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1745:2: kw= '..'
                    {
                    kw=(Token)match(input,47,FOLLOW_47_in_ruleOpOther4075); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
                          
                    }

                    }
                    break;
                case 5 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1752:2: kw= '=>'
                    {
                    kw=(Token)match(input,48,FOLLOW_48_in_ruleOpOther4094); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
                          
                    }

                    }
                    break;
                case 6 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1758:6: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1758:6: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1759:2: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
                    {
                    kw=(Token)match(input,43,FOLLOW_43_in_ruleOpOther4114); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); 
                          
                    }
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1764:1: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
                    int alt24=2;
                    int LA24_0 = input.LA(1);

                    if ( (LA24_0==43) ) {
                        int LA24_1 = input.LA(2);

                        if ( (LA24_1==43) && (synpred8_InternalMyDsl())) {
                            alt24=1;
                        }
                        else if ( (LA24_1==EOF||(LA24_1>=RULE_ID && LA24_1<=RULE_DECIMAL)||LA24_1==14||LA24_1==28||LA24_1==44||(LA24_1>=52 && LA24_1<=53)||LA24_1==57||(LA24_1>=61 && LA24_1<=62)||LA24_1==66||LA24_1==68||(LA24_1>=71 && LA24_1<=78)||(LA24_1>=80 && LA24_1<=87)) ) {
                            alt24=2;
                        }
                        else {
                            if (state.backtracking>0) {state.failed=true; return current;}
                            NoViableAltException nvae =
                                new NoViableAltException("", 24, 1, input);

                            throw nvae;
                        }
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 24, 0, input);

                        throw nvae;
                    }
                    switch (alt24) {
                        case 1 :
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1764:2: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1764:2: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1764:3: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1768:5: (kw= '>' kw= '>' )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1769:2: kw= '>' kw= '>'
                            {
                            kw=(Token)match(input,43,FOLLOW_43_in_ruleOpOther4145); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      current.merge(kw);
                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); 
                                  
                            }
                            kw=(Token)match(input,43,FOLLOW_43_in_ruleOpOther4158); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      current.merge(kw);
                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
                                  
                            }

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1782:2: kw= '>'
                            {
                            kw=(Token)match(input,43,FOLLOW_43_in_ruleOpOther4179); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      current.merge(kw);
                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
                                  
                            }

                            }
                            break;

                    }


                    }


                    }
                    break;
                case 7 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1788:6: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1788:6: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1789:2: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' )
                    {
                    kw=(Token)match(input,44,FOLLOW_44_in_ruleOpOther4201); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); 
                          
                    }
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1794:1: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' )
                    int alt25=2;
                    int LA25_0 = input.LA(1);

                    if ( (LA25_0==44) ) {
                        int LA25_1 = input.LA(2);

                        if ( (synpred9_InternalMyDsl()) ) {
                            alt25=1;
                        }
                        else if ( (true) ) {
                            alt25=2;
                        }
                        else {
                            if (state.backtracking>0) {state.failed=true; return current;}
                            NoViableAltException nvae =
                                new NoViableAltException("", 25, 1, input);

                            throw nvae;
                        }
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 25, 0, input);

                        throw nvae;
                    }
                    switch (alt25) {
                        case 1 :
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1794:2: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1794:2: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1794:3: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1798:5: (kw= '<' kw= '<' )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1799:2: kw= '<' kw= '<'
                            {
                            kw=(Token)match(input,44,FOLLOW_44_in_ruleOpOther4232); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      current.merge(kw);
                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); 
                                  
                            }
                            kw=(Token)match(input,44,FOLLOW_44_in_ruleOpOther4245); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      current.merge(kw);
                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
                                  
                            }

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1812:2: kw= '<'
                            {
                            kw=(Token)match(input,44,FOLLOW_44_in_ruleOpOther4266); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      current.merge(kw);
                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
                                  
                            }

                            }
                            break;

                    }


                    }


                    }
                    break;
                case 8 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1819:2: kw= '<>'
                    {
                    kw=(Token)match(input,49,FOLLOW_49_in_ruleOpOther4287); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
                          
                    }

                    }
                    break;
                case 9 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1826:2: kw= '?:'
                    {
                    kw=(Token)match(input,50,FOLLOW_50_in_ruleOpOther4306); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
                          
                    }

                    }
                    break;
                case 10 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1833:2: kw= '<=>'
                    {
                    kw=(Token)match(input,51,FOLLOW_51_in_ruleOpOther4325); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignEqualsSignGreaterThanSignKeyword_9()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpOther"


    // $ANTLR start "entryRuleXAdditiveExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1846:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
    public final EObject entryRuleXAdditiveExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXAdditiveExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1847:2: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1848:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression4365);
            iv_ruleXAdditiveExpression=ruleXAdditiveExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXAdditiveExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXAdditiveExpression4375); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXAdditiveExpression"


    // $ANTLR start "ruleXAdditiveExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1855:1: ruleXAdditiveExpression returns [EObject current=null] : (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) ;
    public final EObject ruleXAdditiveExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XMultiplicativeExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1858:28: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1859:1: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1859:1: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1860:5: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression4422);
            this_XMultiplicativeExpression_0=ruleXMultiplicativeExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XMultiplicativeExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1868:1: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
            loop27:
            do {
                int alt27=2;
                int LA27_0 = input.LA(1);

                if ( (LA27_0==52) ) {
                    int LA27_2 = input.LA(2);

                    if ( (synpred10_InternalMyDsl()) ) {
                        alt27=1;
                    }


                }
                else if ( (LA27_0==53) ) {
                    int LA27_3 = input.LA(2);

                    if ( (synpred10_InternalMyDsl()) ) {
                        alt27=1;
                    }


                }


                switch (alt27) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1868:2: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1868:2: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1868:3: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1873:6: ( () ( ( ruleOpAdd ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1873:7: () ( ( ruleOpAdd ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1873:7: ()
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1874:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1879:2: ( ( ruleOpAdd ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1880:1: ( ruleOpAdd )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1880:1: ( ruleOpAdd )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1881:3: ruleOpAdd
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXAdditiveExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpAdd_in_ruleXAdditiveExpression4475);
            	    ruleOpAdd();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1894:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1895:1: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1895:1: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1896:3: lv_rightOperand_3_0= ruleXMultiplicativeExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression4498);
            	    lv_rightOperand_3_0=ruleXMultiplicativeExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXAdditiveExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XMultiplicativeExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop27;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXAdditiveExpression"


    // $ANTLR start "entryRuleOpAdd"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1920:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
    public final String entryRuleOpAdd() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpAdd = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1921:2: (iv_ruleOpAdd= ruleOpAdd EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1922:2: iv_ruleOpAdd= ruleOpAdd EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpAddRule()); 
            }
            pushFollow(FOLLOW_ruleOpAdd_in_entryRuleOpAdd4537);
            iv_ruleOpAdd=ruleOpAdd();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpAdd.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAdd4548); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpAdd"


    // $ANTLR start "ruleOpAdd"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1929:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
    public final AntlrDatatypeRuleToken ruleOpAdd() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1932:28: ( (kw= '+' | kw= '-' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1933:1: (kw= '+' | kw= '-' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1933:1: (kw= '+' | kw= '-' )
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==52) ) {
                alt28=1;
            }
            else if ( (LA28_0==53) ) {
                alt28=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 28, 0, input);

                throw nvae;
            }
            switch (alt28) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1934:2: kw= '+'
                    {
                    kw=(Token)match(input,52,FOLLOW_52_in_ruleOpAdd4586); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1941:2: kw= '-'
                    {
                    kw=(Token)match(input,53,FOLLOW_53_in_ruleOpAdd4605); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpAdd"


    // $ANTLR start "entryRuleXMultiplicativeExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1954:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
    public final EObject entryRuleXMultiplicativeExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXMultiplicativeExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1955:2: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1956:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression4645);
            iv_ruleXMultiplicativeExpression=ruleXMultiplicativeExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXMultiplicativeExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXMultiplicativeExpression4655); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXMultiplicativeExpression"


    // $ANTLR start "ruleXMultiplicativeExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1963:1: ruleXMultiplicativeExpression returns [EObject current=null] : (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) ;
    public final EObject ruleXMultiplicativeExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XUnaryOperation_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1966:28: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1967:1: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1967:1: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1968:5: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression4702);
            this_XUnaryOperation_0=ruleXUnaryOperation();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XUnaryOperation_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1976:1: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
            loop29:
            do {
                int alt29=2;
                switch ( input.LA(1) ) {
                case 18:
                    {
                    int LA29_2 = input.LA(2);

                    if ( (synpred11_InternalMyDsl()) ) {
                        alt29=1;
                    }


                    }
                    break;
                case 54:
                    {
                    int LA29_3 = input.LA(2);

                    if ( (synpred11_InternalMyDsl()) ) {
                        alt29=1;
                    }


                    }
                    break;
                case 55:
                    {
                    int LA29_4 = input.LA(2);

                    if ( (synpred11_InternalMyDsl()) ) {
                        alt29=1;
                    }


                    }
                    break;
                case 56:
                    {
                    int LA29_5 = input.LA(2);

                    if ( (synpred11_InternalMyDsl()) ) {
                        alt29=1;
                    }


                    }
                    break;

                }

                switch (alt29) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1976:2: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1976:2: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1976:3: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1981:6: ( () ( ( ruleOpMulti ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1981:7: () ( ( ruleOpMulti ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1981:7: ()
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1982:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1987:2: ( ( ruleOpMulti ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1988:1: ( ruleOpMulti )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1988:1: ( ruleOpMulti )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1989:3: ruleOpMulti
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXMultiplicativeExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpMulti_in_ruleXMultiplicativeExpression4755);
            	    ruleOpMulti();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2002:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2003:1: (lv_rightOperand_3_0= ruleXUnaryOperation )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2003:1: (lv_rightOperand_3_0= ruleXUnaryOperation )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2004:3: lv_rightOperand_3_0= ruleXUnaryOperation
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression4778);
            	    lv_rightOperand_3_0=ruleXUnaryOperation();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXMultiplicativeExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XUnaryOperation");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop29;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXMultiplicativeExpression"


    // $ANTLR start "entryRuleOpMulti"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2028:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
    public final String entryRuleOpMulti() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpMulti = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2029:2: (iv_ruleOpMulti= ruleOpMulti EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2030:2: iv_ruleOpMulti= ruleOpMulti EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpMultiRule()); 
            }
            pushFollow(FOLLOW_ruleOpMulti_in_entryRuleOpMulti4817);
            iv_ruleOpMulti=ruleOpMulti();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpMulti.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMulti4828); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpMulti"


    // $ANTLR start "ruleOpMulti"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2037:1: ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) ;
    public final AntlrDatatypeRuleToken ruleOpMulti() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2040:28: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2041:1: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2041:1: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
            int alt30=4;
            switch ( input.LA(1) ) {
            case 18:
                {
                alt30=1;
                }
                break;
            case 54:
                {
                alt30=2;
                }
                break;
            case 55:
                {
                alt30=3;
                }
                break;
            case 56:
                {
                alt30=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 30, 0, input);

                throw nvae;
            }

            switch (alt30) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2042:2: kw= '*'
                    {
                    kw=(Token)match(input,18,FOLLOW_18_in_ruleOpMulti4866); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2049:2: kw= '**'
                    {
                    kw=(Token)match(input,54,FOLLOW_54_in_ruleOpMulti4885); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2056:2: kw= '/'
                    {
                    kw=(Token)match(input,55,FOLLOW_55_in_ruleOpMulti4904); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
                          
                    }

                    }
                    break;
                case 4 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2063:2: kw= '%'
                    {
                    kw=(Token)match(input,56,FOLLOW_56_in_ruleOpMulti4923); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpMulti"


    // $ANTLR start "entryRuleXUnaryOperation"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2076:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
    public final EObject entryRuleXUnaryOperation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXUnaryOperation = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2077:2: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2078:2: iv_ruleXUnaryOperation= ruleXUnaryOperation EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXUnaryOperationRule()); 
            }
            pushFollow(FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation4963);
            iv_ruleXUnaryOperation=ruleXUnaryOperation();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXUnaryOperation; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXUnaryOperation4973); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXUnaryOperation"


    // $ANTLR start "ruleXUnaryOperation"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2085:1: ruleXUnaryOperation returns [EObject current=null] : ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) ;
    public final EObject ruleXUnaryOperation() throws RecognitionException {
        EObject current = null;

        EObject lv_operand_2_0 = null;

        EObject this_XCastedExpression_3 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2088:28: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2089:1: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2089:1: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
            int alt31=2;
            int LA31_0 = input.LA(1);

            if ( ((LA31_0>=52 && LA31_0<=53)||LA31_0==57) ) {
                alt31=1;
            }
            else if ( ((LA31_0>=RULE_ID && LA31_0<=RULE_DECIMAL)||LA31_0==14||LA31_0==28||LA31_0==44||(LA31_0>=61 && LA31_0<=62)||LA31_0==66||LA31_0==68||(LA31_0>=71 && LA31_0<=78)||(LA31_0>=80 && LA31_0<=87)) ) {
                alt31=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 31, 0, input);

                throw nvae;
            }
            switch (alt31) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2089:2: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2089:2: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2089:3: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2089:3: ()
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2090:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
                                  current);
                          
                    }

                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2095:2: ( ( ruleOpUnary ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2096:1: ( ruleOpUnary )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2096:1: ( ruleOpUnary )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2097:3: ruleOpUnary
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXUnaryOperationRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleOpUnary_in_ruleXUnaryOperation5031);
                    ruleOpUnary();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2110:2: ( (lv_operand_2_0= ruleXUnaryOperation ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2111:1: (lv_operand_2_0= ruleXUnaryOperation )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2111:1: (lv_operand_2_0= ruleXUnaryOperation )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2112:3: lv_operand_2_0= ruleXUnaryOperation
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXUnaryOperation5052);
                    lv_operand_2_0=ruleXUnaryOperation();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXUnaryOperationRule());
                      	        }
                             		set(
                             			current, 
                             			"operand",
                              		lv_operand_2_0, 
                              		"XUnaryOperation");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2130:5: this_XCastedExpression_3= ruleXCastedExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXCastedExpression_in_ruleXUnaryOperation5081);
                    this_XCastedExpression_3=ruleXCastedExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XCastedExpression_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXUnaryOperation"


    // $ANTLR start "entryRuleOpUnary"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2146:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
    public final String entryRuleOpUnary() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpUnary = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2147:2: (iv_ruleOpUnary= ruleOpUnary EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2148:2: iv_ruleOpUnary= ruleOpUnary EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpUnaryRule()); 
            }
            pushFollow(FOLLOW_ruleOpUnary_in_entryRuleOpUnary5117);
            iv_ruleOpUnary=ruleOpUnary();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpUnary.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpUnary5128); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpUnary"


    // $ANTLR start "ruleOpUnary"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2155:1: ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '!' | kw= '-' | kw= '+' ) ;
    public final AntlrDatatypeRuleToken ruleOpUnary() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2158:28: ( (kw= '!' | kw= '-' | kw= '+' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2159:1: (kw= '!' | kw= '-' | kw= '+' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2159:1: (kw= '!' | kw= '-' | kw= '+' )
            int alt32=3;
            switch ( input.LA(1) ) {
            case 57:
                {
                alt32=1;
                }
                break;
            case 53:
                {
                alt32=2;
                }
                break;
            case 52:
                {
                alt32=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 32, 0, input);

                throw nvae;
            }

            switch (alt32) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2160:2: kw= '!'
                    {
                    kw=(Token)match(input,57,FOLLOW_57_in_ruleOpUnary5166); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2167:2: kw= '-'
                    {
                    kw=(Token)match(input,53,FOLLOW_53_in_ruleOpUnary5185); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2174:2: kw= '+'
                    {
                    kw=(Token)match(input,52,FOLLOW_52_in_ruleOpUnary5204); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpUnary"


    // $ANTLR start "entryRuleXCastedExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2187:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
    public final EObject entryRuleXCastedExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXCastedExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2188:2: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2189:2: iv_ruleXCastedExpression= ruleXCastedExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXCastedExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression5244);
            iv_ruleXCastedExpression=ruleXCastedExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXCastedExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXCastedExpression5254); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXCastedExpression"


    // $ANTLR start "ruleXCastedExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2196:1: ruleXCastedExpression returns [EObject current=null] : (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) ;
    public final EObject ruleXCastedExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_XMemberFeatureCall_0 = null;

        EObject lv_type_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2199:28: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2200:1: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2200:1: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2201:5: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXMemberFeatureCallParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXMemberFeatureCall_in_ruleXCastedExpression5301);
            this_XMemberFeatureCall_0=ruleXMemberFeatureCall();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XMemberFeatureCall_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2209:1: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
            loop33:
            do {
                int alt33=2;
                int LA33_0 = input.LA(1);

                if ( (LA33_0==58) ) {
                    int LA33_2 = input.LA(2);

                    if ( (synpred12_InternalMyDsl()) ) {
                        alt33=1;
                    }


                }


                switch (alt33) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2209:2: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2209:2: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2209:3: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2211:5: ( () otherlv_2= 'as' )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2211:6: () otherlv_2= 'as'
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2211:6: ()
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2212:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    otherlv_2=(Token)match(input,58,FOLLOW_58_in_ruleXCastedExpression5336); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
            	          
            	    }

            	    }


            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2221:3: ( (lv_type_3_0= ruleJvmTypeReference ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2222:1: (lv_type_3_0= ruleJvmTypeReference )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2222:1: (lv_type_3_0= ruleJvmTypeReference )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2223:3: lv_type_3_0= ruleJvmTypeReference
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXCastedExpression5359);
            	    lv_type_3_0=ruleJvmTypeReference();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXCastedExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"type",
            	              		lv_type_3_0, 
            	              		"JvmTypeReference");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop33;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXCastedExpression"


    // $ANTLR start "entryRuleXMemberFeatureCall"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2247:1: entryRuleXMemberFeatureCall returns [EObject current=null] : iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF ;
    public final EObject entryRuleXMemberFeatureCall() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXMemberFeatureCall = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2248:2: (iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2249:2: iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXMemberFeatureCallRule()); 
            }
            pushFollow(FOLLOW_ruleXMemberFeatureCall_in_entryRuleXMemberFeatureCall5397);
            iv_ruleXMemberFeatureCall=ruleXMemberFeatureCall();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXMemberFeatureCall; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXMemberFeatureCall5407); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXMemberFeatureCall"


    // $ANTLR start "ruleXMemberFeatureCall"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2256:1: ruleXMemberFeatureCall returns [EObject current=null] : (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleFeatureCallID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )? ) )* ) ;
    public final EObject ruleXMemberFeatureCall() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_7=null;
        Token lv_nullSafe_8_0=null;
        Token lv_spreading_9_0=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        Token lv_explicitOperationCall_16_0=null;
        Token otherlv_19=null;
        Token otherlv_21=null;
        EObject this_XPrimaryExpression_0 = null;

        EObject lv_value_5_0 = null;

        EObject lv_typeArguments_11_0 = null;

        EObject lv_typeArguments_13_0 = null;

        EObject lv_memberCallArguments_17_0 = null;

        EObject lv_memberCallArguments_18_0 = null;

        EObject lv_memberCallArguments_20_0 = null;

        EObject lv_memberCallArguments_22_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2259:28: ( (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleFeatureCallID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )? ) )* ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2260:1: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleFeatureCallID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )? ) )* )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2260:1: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleFeatureCallID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )? ) )* )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2261:5: this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleFeatureCallID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )? ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXPrimaryExpression_in_ruleXMemberFeatureCall5454);
            this_XPrimaryExpression_0=ruleXPrimaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XPrimaryExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2269:1: ( ( ( ( ( () '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleFeatureCallID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )? ) )*
            loop41:
            do {
                int alt41=3;
                switch ( input.LA(1) ) {
                case 17:
                    {
                    int LA41_2 = input.LA(2);

                    if ( (synpred13_InternalMyDsl()) ) {
                        alt41=1;
                    }
                    else if ( (synpred14_InternalMyDsl()) ) {
                        alt41=2;
                    }


                    }
                    break;
                case 59:
                    {
                    int LA41_3 = input.LA(2);

                    if ( (synpred14_InternalMyDsl()) ) {
                        alt41=2;
                    }


                    }
                    break;
                case 60:
                    {
                    int LA41_4 = input.LA(2);

                    if ( (synpred14_InternalMyDsl()) ) {
                        alt41=2;
                    }


                    }
                    break;

                }

                switch (alt41) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2269:2: ( ( ( ( () '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2269:2: ( ( ( ( () '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2269:3: ( ( ( () '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2269:3: ( ( ( () '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2269:4: ( ( () '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2275:25: ( () otherlv_2= '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2275:26: () otherlv_2= '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2275:26: ()
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2276:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    otherlv_2=(Token)match(input,17,FOLLOW_17_in_ruleXMemberFeatureCall5503); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1());
            	          
            	    }
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2285:1: ( ( ruleFeatureCallID ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2286:1: ( ruleFeatureCallID )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2286:1: ( ruleFeatureCallID )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2287:3: ruleFeatureCallID
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleFeatureCallID_in_ruleXMemberFeatureCall5526);
            	    ruleFeatureCallID();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    if ( state.backtracking==0 ) {
            	       
            	              newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3()); 
            	          
            	    }
            	    pushFollow(FOLLOW_ruleOpSingleAssign_in_ruleXMemberFeatureCall5542);
            	    ruleOpSingleAssign();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	              afterParserOrEnumRuleCall();
            	          
            	    }

            	    }


            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2308:3: ( (lv_value_5_0= ruleXAssignment ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2309:1: (lv_value_5_0= ruleXAssignment )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2309:1: (lv_value_5_0= ruleXAssignment )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2310:3: lv_value_5_0= ruleXAssignment
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXAssignment_in_ruleXMemberFeatureCall5564);
            	    lv_value_5_0=ruleXAssignment();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"value",
            	              		lv_value_5_0, 
            	              		"XAssignment");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2327:6: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleFeatureCallID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )? )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2327:6: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleFeatureCallID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )? )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2327:7: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleFeatureCallID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )?
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2327:7: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2327:8: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2343:7: ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2343:8: () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2343:8: ()
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2344:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2349:2: (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) )
            	    int alt34=3;
            	    switch ( input.LA(1) ) {
            	    case 17:
            	        {
            	        alt34=1;
            	        }
            	        break;
            	    case 59:
            	        {
            	        alt34=2;
            	        }
            	        break;
            	    case 60:
            	        {
            	        alt34=3;
            	        }
            	        break;
            	    default:
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 34, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt34) {
            	        case 1 :
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2349:4: otherlv_7= '.'
            	            {
            	            otherlv_7=(Token)match(input,17,FOLLOW_17_in_ruleXMemberFeatureCall5650); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_7, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
            	                  
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2354:6: ( (lv_nullSafe_8_0= '?.' ) )
            	            {
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2354:6: ( (lv_nullSafe_8_0= '?.' ) )
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2355:1: (lv_nullSafe_8_0= '?.' )
            	            {
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2355:1: (lv_nullSafe_8_0= '?.' )
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2356:3: lv_nullSafe_8_0= '?.'
            	            {
            	            lv_nullSafe_8_0=(Token)match(input,59,FOLLOW_59_in_ruleXMemberFeatureCall5674); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_nullSafe_8_0, grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
            	              	        }
            	                     		setWithLastConsumed(current, "nullSafe", true, "?.");
            	              	    
            	            }

            	            }


            	            }


            	            }
            	            break;
            	        case 3 :
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2370:6: ( (lv_spreading_9_0= '*.' ) )
            	            {
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2370:6: ( (lv_spreading_9_0= '*.' ) )
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2371:1: (lv_spreading_9_0= '*.' )
            	            {
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2371:1: (lv_spreading_9_0= '*.' )
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2372:3: lv_spreading_9_0= '*.'
            	            {
            	            lv_spreading_9_0=(Token)match(input,60,FOLLOW_60_in_ruleXMemberFeatureCall5711); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_spreading_9_0, grammarAccess.getXMemberFeatureCallAccess().getSpreadingAsteriskFullStopKeyword_1_1_0_0_1_2_0());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
            	              	        }
            	                     		setWithLastConsumed(current, "spreading", true, "*.");
            	              	    
            	            }

            	            }


            	            }


            	            }
            	            break;

            	    }


            	    }


            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2385:5: (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )?
            	    int alt36=2;
            	    int LA36_0 = input.LA(1);

            	    if ( (LA36_0==44) ) {
            	        alt36=1;
            	    }
            	    switch (alt36) {
            	        case 1 :
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2385:7: otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>'
            	            {
            	            otherlv_10=(Token)match(input,44,FOLLOW_44_in_ruleXMemberFeatureCall5740); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_10, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
            	                  
            	            }
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2389:1: ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) )
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2390:1: (lv_typeArguments_11_0= ruleJvmArgumentTypeReference )
            	            {
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2390:1: (lv_typeArguments_11_0= ruleJvmArgumentTypeReference )
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2391:3: lv_typeArguments_11_0= ruleJvmArgumentTypeReference
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXMemberFeatureCall5761);
            	            lv_typeArguments_11_0=ruleJvmArgumentTypeReference();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"typeArguments",
            	                      		lv_typeArguments_11_0, 
            	                      		"JvmArgumentTypeReference");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }


            	            }

            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2407:2: (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )*
            	            loop35:
            	            do {
            	                int alt35=2;
            	                int LA35_0 = input.LA(1);

            	                if ( (LA35_0==29) ) {
            	                    alt35=1;
            	                }


            	                switch (alt35) {
            	            	case 1 :
            	            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2407:4: otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) )
            	            	    {
            	            	    otherlv_12=(Token)match(input,29,FOLLOW_29_in_ruleXMemberFeatureCall5774); if (state.failed) return current;
            	            	    if ( state.backtracking==0 ) {

            	            	          	newLeafNode(otherlv_12, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
            	            	          
            	            	    }
            	            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2411:1: ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) )
            	            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2412:1: (lv_typeArguments_13_0= ruleJvmArgumentTypeReference )
            	            	    {
            	            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2412:1: (lv_typeArguments_13_0= ruleJvmArgumentTypeReference )
            	            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2413:3: lv_typeArguments_13_0= ruleJvmArgumentTypeReference
            	            	    {
            	            	    if ( state.backtracking==0 ) {
            	            	       
            	            	      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0()); 
            	            	      	    
            	            	    }
            	            	    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXMemberFeatureCall5795);
            	            	    lv_typeArguments_13_0=ruleJvmArgumentTypeReference();

            	            	    state._fsp--;
            	            	    if (state.failed) return current;
            	            	    if ( state.backtracking==0 ) {

            	            	      	        if (current==null) {
            	            	      	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	            	      	        }
            	            	             		add(
            	            	             			current, 
            	            	             			"typeArguments",
            	            	              		lv_typeArguments_13_0, 
            	            	              		"JvmArgumentTypeReference");
            	            	      	        afterParserOrEnumRuleCall();
            	            	      	    
            	            	    }

            	            	    }


            	            	    }


            	            	    }
            	            	    break;

            	            	default :
            	            	    break loop35;
            	                }
            	            } while (true);

            	            otherlv_14=(Token)match(input,43,FOLLOW_43_in_ruleXMemberFeatureCall5809); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_14, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
            	                  
            	            }

            	            }
            	            break;

            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2433:3: ( ( ruleFeatureCallID ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2434:1: ( ruleFeatureCallID )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2434:1: ( ruleFeatureCallID )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2435:3: ruleFeatureCallID
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleFeatureCallID_in_ruleXMemberFeatureCall5834);
            	    ruleFeatureCallID();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2448:2: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )?
            	    int alt39=2;
            	    alt39 = dfa39.predict(input);
            	    switch (alt39) {
            	        case 1 :
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2448:3: ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')'
            	            {
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2448:3: ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) )
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2448:4: ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' )
            	            {
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2455:1: (lv_explicitOperationCall_16_0= '(' )
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2456:3: lv_explicitOperationCall_16_0= '('
            	            {
            	            lv_explicitOperationCall_16_0=(Token)match(input,28,FOLLOW_28_in_ruleXMemberFeatureCall5868); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_explicitOperationCall_16_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
            	              	        }
            	                     		setWithLastConsumed(current, "explicitOperationCall", true, "(");
            	              	    
            	            }

            	            }


            	            }

            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2469:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )?
            	            int alt38=3;
            	            alt38 = dfa38.predict(input);
            	            switch (alt38) {
            	                case 1 :
            	                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2469:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) )
            	                    {
            	                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2469:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) )
            	                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2469:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure )
            	                    {
            	                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2486:1: (lv_memberCallArguments_17_0= ruleXShortClosure )
            	                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2487:3: lv_memberCallArguments_17_0= ruleXShortClosure
            	                    {
            	                    if ( state.backtracking==0 ) {
            	                       
            	                      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0()); 
            	                      	    
            	                    }
            	                    pushFollow(FOLLOW_ruleXShortClosure_in_ruleXMemberFeatureCall5953);
            	                    lv_memberCallArguments_17_0=ruleXShortClosure();

            	                    state._fsp--;
            	                    if (state.failed) return current;
            	                    if ( state.backtracking==0 ) {

            	                      	        if (current==null) {
            	                      	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	                      	        }
            	                             		add(
            	                             			current, 
            	                             			"memberCallArguments",
            	                              		lv_memberCallArguments_17_0, 
            	                              		"XShortClosure");
            	                      	        afterParserOrEnumRuleCall();
            	                      	    
            	                    }

            	                    }


            	                    }


            	                    }
            	                    break;
            	                case 2 :
            	                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2504:6: ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* )
            	                    {
            	                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2504:6: ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* )
            	                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2504:7: ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )*
            	                    {
            	                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2504:7: ( (lv_memberCallArguments_18_0= ruleXExpression ) )
            	                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2505:1: (lv_memberCallArguments_18_0= ruleXExpression )
            	                    {
            	                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2505:1: (lv_memberCallArguments_18_0= ruleXExpression )
            	                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2506:3: lv_memberCallArguments_18_0= ruleXExpression
            	                    {
            	                    if ( state.backtracking==0 ) {
            	                       
            	                      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0()); 
            	                      	    
            	                    }
            	                    pushFollow(FOLLOW_ruleXExpression_in_ruleXMemberFeatureCall5981);
            	                    lv_memberCallArguments_18_0=ruleXExpression();

            	                    state._fsp--;
            	                    if (state.failed) return current;
            	                    if ( state.backtracking==0 ) {

            	                      	        if (current==null) {
            	                      	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	                      	        }
            	                             		add(
            	                             			current, 
            	                             			"memberCallArguments",
            	                              		lv_memberCallArguments_18_0, 
            	                              		"XExpression");
            	                      	        afterParserOrEnumRuleCall();
            	                      	    
            	                    }

            	                    }


            	                    }

            	                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2522:2: (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )*
            	                    loop37:
            	                    do {
            	                        int alt37=2;
            	                        int LA37_0 = input.LA(1);

            	                        if ( (LA37_0==29) ) {
            	                            alt37=1;
            	                        }


            	                        switch (alt37) {
            	                    	case 1 :
            	                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2522:4: otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) )
            	                    	    {
            	                    	    otherlv_19=(Token)match(input,29,FOLLOW_29_in_ruleXMemberFeatureCall5994); if (state.failed) return current;
            	                    	    if ( state.backtracking==0 ) {

            	                    	          	newLeafNode(otherlv_19, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
            	                    	          
            	                    	    }
            	                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2526:1: ( (lv_memberCallArguments_20_0= ruleXExpression ) )
            	                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2527:1: (lv_memberCallArguments_20_0= ruleXExpression )
            	                    	    {
            	                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2527:1: (lv_memberCallArguments_20_0= ruleXExpression )
            	                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2528:3: lv_memberCallArguments_20_0= ruleXExpression
            	                    	    {
            	                    	    if ( state.backtracking==0 ) {
            	                    	       
            	                    	      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0()); 
            	                    	      	    
            	                    	    }
            	                    	    pushFollow(FOLLOW_ruleXExpression_in_ruleXMemberFeatureCall6015);
            	                    	    lv_memberCallArguments_20_0=ruleXExpression();

            	                    	    state._fsp--;
            	                    	    if (state.failed) return current;
            	                    	    if ( state.backtracking==0 ) {

            	                    	      	        if (current==null) {
            	                    	      	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	                    	      	        }
            	                    	             		add(
            	                    	             			current, 
            	                    	             			"memberCallArguments",
            	                    	              		lv_memberCallArguments_20_0, 
            	                    	              		"XExpression");
            	                    	      	        afterParserOrEnumRuleCall();
            	                    	      	    
            	                    	    }

            	                    	    }


            	                    	    }


            	                    	    }
            	                    	    break;

            	                    	default :
            	                    	    break loop37;
            	                        }
            	                    } while (true);


            	                    }


            	                    }
            	                    break;

            	            }

            	            otherlv_21=(Token)match(input,30,FOLLOW_30_in_ruleXMemberFeatureCall6032); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_21, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
            	                  
            	            }

            	            }
            	            break;

            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2548:3: ( ( ( () '[' ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )?
            	    int alt40=2;
            	    alt40 = dfa40.predict(input);
            	    switch (alt40) {
            	        case 1 :
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2548:4: ( ( () '[' ) )=> (lv_memberCallArguments_22_0= ruleXClosure )
            	            {
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2551:1: (lv_memberCallArguments_22_0= ruleXClosure )
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2552:3: lv_memberCallArguments_22_0= ruleXClosure
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleXClosure_in_ruleXMemberFeatureCall6067);
            	            lv_memberCallArguments_22_0=ruleXClosure();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"memberCallArguments",
            	                      		lv_memberCallArguments_22_0, 
            	                      		"XClosure");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }


            	            }
            	            break;

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop41;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXMemberFeatureCall"


    // $ANTLR start "entryRuleXPrimaryExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2576:1: entryRuleXPrimaryExpression returns [EObject current=null] : iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF ;
    public final EObject entryRuleXPrimaryExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXPrimaryExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2577:2: (iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2578:2: iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXPrimaryExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXPrimaryExpression_in_entryRuleXPrimaryExpression6107);
            iv_ruleXPrimaryExpression=ruleXPrimaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXPrimaryExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXPrimaryExpression6117); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXPrimaryExpression"


    // $ANTLR start "ruleXPrimaryExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2585:1: ruleXPrimaryExpression returns [EObject current=null] : (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | this_XFeatureCall_3= ruleXFeatureCall | this_XLiteral_4= ruleXLiteral | this_XIfExpression_5= ruleXIfExpression | this_XForLoopExpression_6= ruleXForLoopExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XDoWhileExpression_8= ruleXDoWhileExpression | this_XThrowExpression_9= ruleXThrowExpression | this_XReturnExpression_10= ruleXReturnExpression | this_XTryCatchFinallyExpression_11= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_12= ruleXParenthesizedExpression ) ;
    public final EObject ruleXPrimaryExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XConstructorCall_0 = null;

        EObject this_XBlockExpression_1 = null;

        EObject this_XSwitchExpression_2 = null;

        EObject this_XFeatureCall_3 = null;

        EObject this_XLiteral_4 = null;

        EObject this_XIfExpression_5 = null;

        EObject this_XForLoopExpression_6 = null;

        EObject this_XWhileExpression_7 = null;

        EObject this_XDoWhileExpression_8 = null;

        EObject this_XThrowExpression_9 = null;

        EObject this_XReturnExpression_10 = null;

        EObject this_XTryCatchFinallyExpression_11 = null;

        EObject this_XParenthesizedExpression_12 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2588:28: ( (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | this_XFeatureCall_3= ruleXFeatureCall | this_XLiteral_4= ruleXLiteral | this_XIfExpression_5= ruleXIfExpression | this_XForLoopExpression_6= ruleXForLoopExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XDoWhileExpression_8= ruleXDoWhileExpression | this_XThrowExpression_9= ruleXThrowExpression | this_XReturnExpression_10= ruleXReturnExpression | this_XTryCatchFinallyExpression_11= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_12= ruleXParenthesizedExpression ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2589:1: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | this_XFeatureCall_3= ruleXFeatureCall | this_XLiteral_4= ruleXLiteral | this_XIfExpression_5= ruleXIfExpression | this_XForLoopExpression_6= ruleXForLoopExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XDoWhileExpression_8= ruleXDoWhileExpression | this_XThrowExpression_9= ruleXThrowExpression | this_XReturnExpression_10= ruleXReturnExpression | this_XTryCatchFinallyExpression_11= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_12= ruleXParenthesizedExpression )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2589:1: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | this_XFeatureCall_3= ruleXFeatureCall | this_XLiteral_4= ruleXLiteral | this_XIfExpression_5= ruleXIfExpression | this_XForLoopExpression_6= ruleXForLoopExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XDoWhileExpression_8= ruleXDoWhileExpression | this_XThrowExpression_9= ruleXThrowExpression | this_XReturnExpression_10= ruleXReturnExpression | this_XTryCatchFinallyExpression_11= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_12= ruleXParenthesizedExpression )
            int alt42=13;
            alt42 = dfa42.predict(input);
            switch (alt42) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2590:5: this_XConstructorCall_0= ruleXConstructorCall
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXConstructorCall_in_ruleXPrimaryExpression6164);
                    this_XConstructorCall_0=ruleXConstructorCall();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XConstructorCall_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2600:5: this_XBlockExpression_1= ruleXBlockExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXBlockExpression_in_ruleXPrimaryExpression6191);
                    this_XBlockExpression_1=ruleXBlockExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XBlockExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2610:5: this_XSwitchExpression_2= ruleXSwitchExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXSwitchExpression_in_ruleXPrimaryExpression6218);
                    this_XSwitchExpression_2=ruleXSwitchExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XSwitchExpression_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2620:5: this_XFeatureCall_3= ruleXFeatureCall
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXFeatureCall_in_ruleXPrimaryExpression6245);
                    this_XFeatureCall_3=ruleXFeatureCall();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XFeatureCall_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2630:5: this_XLiteral_4= ruleXLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXLiteral_in_ruleXPrimaryExpression6272);
                    this_XLiteral_4=ruleXLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XLiteral_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 6 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2640:5: this_XIfExpression_5= ruleXIfExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_5()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXIfExpression_in_ruleXPrimaryExpression6299);
                    this_XIfExpression_5=ruleXIfExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XIfExpression_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 7 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2650:5: this_XForLoopExpression_6= ruleXForLoopExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_6()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXForLoopExpression_in_ruleXPrimaryExpression6326);
                    this_XForLoopExpression_6=ruleXForLoopExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XForLoopExpression_6; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 8 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2660:5: this_XWhileExpression_7= ruleXWhileExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_7()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXWhileExpression_in_ruleXPrimaryExpression6353);
                    this_XWhileExpression_7=ruleXWhileExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XWhileExpression_7; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 9 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2670:5: this_XDoWhileExpression_8= ruleXDoWhileExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_8()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXDoWhileExpression_in_ruleXPrimaryExpression6380);
                    this_XDoWhileExpression_8=ruleXDoWhileExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XDoWhileExpression_8; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 10 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2680:5: this_XThrowExpression_9= ruleXThrowExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_9()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXThrowExpression_in_ruleXPrimaryExpression6407);
                    this_XThrowExpression_9=ruleXThrowExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XThrowExpression_9; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 11 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2690:5: this_XReturnExpression_10= ruleXReturnExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_10()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXReturnExpression_in_ruleXPrimaryExpression6434);
                    this_XReturnExpression_10=ruleXReturnExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XReturnExpression_10; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 12 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2700:5: this_XTryCatchFinallyExpression_11= ruleXTryCatchFinallyExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_11()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXTryCatchFinallyExpression_in_ruleXPrimaryExpression6461);
                    this_XTryCatchFinallyExpression_11=ruleXTryCatchFinallyExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XTryCatchFinallyExpression_11; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 13 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2710:5: this_XParenthesizedExpression_12= ruleXParenthesizedExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_12()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXParenthesizedExpression_in_ruleXPrimaryExpression6488);
                    this_XParenthesizedExpression_12=ruleXParenthesizedExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XParenthesizedExpression_12; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXPrimaryExpression"


    // $ANTLR start "entryRuleXLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2726:1: entryRuleXLiteral returns [EObject current=null] : iv_ruleXLiteral= ruleXLiteral EOF ;
    public final EObject entryRuleXLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXLiteral = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2727:2: (iv_ruleXLiteral= ruleXLiteral EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2728:2: iv_ruleXLiteral= ruleXLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXLiteral_in_entryRuleXLiteral6523);
            iv_ruleXLiteral=ruleXLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXLiteral6533); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXLiteral"


    // $ANTLR start "ruleXLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2735:1: ruleXLiteral returns [EObject current=null] : (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral ) ;
    public final EObject ruleXLiteral() throws RecognitionException {
        EObject current = null;

        EObject this_XCollectionLiteral_0 = null;

        EObject this_XClosure_1 = null;

        EObject this_XBooleanLiteral_2 = null;

        EObject this_XNumberLiteral_3 = null;

        EObject this_XNullLiteral_4 = null;

        EObject this_XStringLiteral_5 = null;

        EObject this_XTypeLiteral_6 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2738:28: ( (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2739:1: (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2739:1: (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral )
            int alt43=7;
            int LA43_0 = input.LA(1);

            if ( (LA43_0==61) ) {
                alt43=1;
            }
            else if ( (LA43_0==62) && (synpred18_InternalMyDsl())) {
                alt43=2;
            }
            else if ( ((LA43_0>=81 && LA43_0<=82)) ) {
                alt43=3;
            }
            else if ( ((LA43_0>=RULE_HEX && LA43_0<=RULE_DECIMAL)) ) {
                alt43=4;
            }
            else if ( (LA43_0==83) ) {
                alt43=5;
            }
            else if ( (LA43_0==RULE_STRING) ) {
                alt43=6;
            }
            else if ( (LA43_0==84) ) {
                alt43=7;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 43, 0, input);

                throw nvae;
            }
            switch (alt43) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2740:5: this_XCollectionLiteral_0= ruleXCollectionLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXCollectionLiteral_in_ruleXLiteral6580);
                    this_XCollectionLiteral_0=ruleXCollectionLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XCollectionLiteral_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2749:6: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2749:6: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2749:7: ( ( () '[' ) )=>this_XClosure_1= ruleXClosure
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXClosure_in_ruleXLiteral6620);
                    this_XClosure_1=ruleXClosure();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XClosure_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2762:5: this_XBooleanLiteral_2= ruleXBooleanLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXBooleanLiteral_in_ruleXLiteral6648);
                    this_XBooleanLiteral_2=ruleXBooleanLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XBooleanLiteral_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2772:5: this_XNumberLiteral_3= ruleXNumberLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXNumberLiteral_in_ruleXLiteral6675);
                    this_XNumberLiteral_3=ruleXNumberLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XNumberLiteral_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2782:5: this_XNullLiteral_4= ruleXNullLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXNullLiteral_in_ruleXLiteral6702);
                    this_XNullLiteral_4=ruleXNullLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XNullLiteral_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 6 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2792:5: this_XStringLiteral_5= ruleXStringLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXStringLiteral_in_ruleXLiteral6729);
                    this_XStringLiteral_5=ruleXStringLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XStringLiteral_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 7 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2802:5: this_XTypeLiteral_6= ruleXTypeLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXTypeLiteral_in_ruleXLiteral6756);
                    this_XTypeLiteral_6=ruleXTypeLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XTypeLiteral_6; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXLiteral"


    // $ANTLR start "entryRuleXCollectionLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2818:1: entryRuleXCollectionLiteral returns [EObject current=null] : iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF ;
    public final EObject entryRuleXCollectionLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXCollectionLiteral = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2819:2: (iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2820:2: iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXCollectionLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXCollectionLiteral_in_entryRuleXCollectionLiteral6791);
            iv_ruleXCollectionLiteral=ruleXCollectionLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXCollectionLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXCollectionLiteral6801); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXCollectionLiteral"


    // $ANTLR start "ruleXCollectionLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2827:1: ruleXCollectionLiteral returns [EObject current=null] : (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) ;
    public final EObject ruleXCollectionLiteral() throws RecognitionException {
        EObject current = null;

        EObject this_XSetLiteral_0 = null;

        EObject this_XListLiteral_1 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2830:28: ( (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2831:1: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2831:1: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
            int alt44=2;
            int LA44_0 = input.LA(1);

            if ( (LA44_0==61) ) {
                int LA44_1 = input.LA(2);

                if ( (LA44_1==14) ) {
                    alt44=1;
                }
                else if ( (LA44_1==62) ) {
                    alt44=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 44, 1, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 44, 0, input);

                throw nvae;
            }
            switch (alt44) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2832:5: this_XSetLiteral_0= ruleXSetLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXSetLiteral_in_ruleXCollectionLiteral6848);
                    this_XSetLiteral_0=ruleXSetLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XSetLiteral_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2842:5: this_XListLiteral_1= ruleXListLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXListLiteral_in_ruleXCollectionLiteral6875);
                    this_XListLiteral_1=ruleXListLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XListLiteral_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXCollectionLiteral"


    // $ANTLR start "entryRuleXSetLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2858:1: entryRuleXSetLiteral returns [EObject current=null] : iv_ruleXSetLiteral= ruleXSetLiteral EOF ;
    public final EObject entryRuleXSetLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXSetLiteral = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2859:2: (iv_ruleXSetLiteral= ruleXSetLiteral EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2860:2: iv_ruleXSetLiteral= ruleXSetLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXSetLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXSetLiteral_in_entryRuleXSetLiteral6910);
            iv_ruleXSetLiteral=ruleXSetLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXSetLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXSetLiteral6920); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXSetLiteral"


    // $ANTLR start "ruleXSetLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2867:1: ruleXSetLiteral returns [EObject current=null] : ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) ;
    public final EObject ruleXSetLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_elements_3_0 = null;

        EObject lv_elements_5_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2870:28: ( ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2871:1: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2871:1: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2871:2: () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}'
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2871:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2872:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,61,FOLLOW_61_in_ruleXSetLiteral6966); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleXSetLiteral6978); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2885:1: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
            int alt46=2;
            int LA46_0 = input.LA(1);

            if ( ((LA46_0>=RULE_ID && LA46_0<=RULE_DECIMAL)||LA46_0==14||LA46_0==28||LA46_0==44||(LA46_0>=52 && LA46_0<=53)||LA46_0==57||(LA46_0>=61 && LA46_0<=62)||LA46_0==66||LA46_0==68||(LA46_0>=71 && LA46_0<=78)||(LA46_0>=80 && LA46_0<=87)) ) {
                alt46=1;
            }
            switch (alt46) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2885:2: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2885:2: ( (lv_elements_3_0= ruleXExpression ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2886:1: (lv_elements_3_0= ruleXExpression )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2886:1: (lv_elements_3_0= ruleXExpression )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2887:3: lv_elements_3_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXSetLiteral7000);
                    lv_elements_3_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
                      	        }
                             		add(
                             			current, 
                             			"elements",
                              		lv_elements_3_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2903:2: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                    loop45:
                    do {
                        int alt45=2;
                        int LA45_0 = input.LA(1);

                        if ( (LA45_0==29) ) {
                            alt45=1;
                        }


                        switch (alt45) {
                    	case 1 :
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2903:4: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
                    	    {
                    	    otherlv_4=(Token)match(input,29,FOLLOW_29_in_ruleXSetLiteral7013); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_4, grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0());
                    	          
                    	    }
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2907:1: ( (lv_elements_5_0= ruleXExpression ) )
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2908:1: (lv_elements_5_0= ruleXExpression )
                    	    {
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2908:1: (lv_elements_5_0= ruleXExpression )
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2909:3: lv_elements_5_0= ruleXExpression
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleXExpression_in_ruleXSetLiteral7034);
                    	    lv_elements_5_0=ruleXExpression();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"elements",
                    	              		lv_elements_5_0, 
                    	              		"XExpression");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop45;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleXSetLiteral7050); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXSetLiteral"


    // $ANTLR start "entryRuleXListLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2937:1: entryRuleXListLiteral returns [EObject current=null] : iv_ruleXListLiteral= ruleXListLiteral EOF ;
    public final EObject entryRuleXListLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXListLiteral = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2938:2: (iv_ruleXListLiteral= ruleXListLiteral EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2939:2: iv_ruleXListLiteral= ruleXListLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXListLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXListLiteral_in_entryRuleXListLiteral7086);
            iv_ruleXListLiteral=ruleXListLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXListLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXListLiteral7096); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXListLiteral"


    // $ANTLR start "ruleXListLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2946:1: ruleXListLiteral returns [EObject current=null] : ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) ;
    public final EObject ruleXListLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_elements_3_0 = null;

        EObject lv_elements_5_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2949:28: ( ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2950:1: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2950:1: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2950:2: () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']'
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2950:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2951:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXListLiteralAccess().getXListLiteralAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,61,FOLLOW_61_in_ruleXListLiteral7142); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,62,FOLLOW_62_in_ruleXListLiteral7154); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2964:1: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
            int alt48=2;
            int LA48_0 = input.LA(1);

            if ( ((LA48_0>=RULE_ID && LA48_0<=RULE_DECIMAL)||LA48_0==14||LA48_0==28||LA48_0==44||(LA48_0>=52 && LA48_0<=53)||LA48_0==57||(LA48_0>=61 && LA48_0<=62)||LA48_0==66||LA48_0==68||(LA48_0>=71 && LA48_0<=78)||(LA48_0>=80 && LA48_0<=87)) ) {
                alt48=1;
            }
            switch (alt48) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2964:2: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2964:2: ( (lv_elements_3_0= ruleXExpression ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2965:1: (lv_elements_3_0= ruleXExpression )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2965:1: (lv_elements_3_0= ruleXExpression )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2966:3: lv_elements_3_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXListLiteral7176);
                    lv_elements_3_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXListLiteralRule());
                      	        }
                             		add(
                             			current, 
                             			"elements",
                              		lv_elements_3_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2982:2: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                    loop47:
                    do {
                        int alt47=2;
                        int LA47_0 = input.LA(1);

                        if ( (LA47_0==29) ) {
                            alt47=1;
                        }


                        switch (alt47) {
                    	case 1 :
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2982:4: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
                    	    {
                    	    otherlv_4=(Token)match(input,29,FOLLOW_29_in_ruleXListLiteral7189); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
                    	          
                    	    }
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2986:1: ( (lv_elements_5_0= ruleXExpression ) )
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2987:1: (lv_elements_5_0= ruleXExpression )
                    	    {
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2987:1: (lv_elements_5_0= ruleXExpression )
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2988:3: lv_elements_5_0= ruleXExpression
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleXExpression_in_ruleXListLiteral7210);
                    	    lv_elements_5_0=ruleXExpression();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXListLiteralRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"elements",
                    	              		lv_elements_5_0, 
                    	              		"XExpression");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop47;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_6=(Token)match(input,63,FOLLOW_63_in_ruleXListLiteral7226); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXListLiteral"


    // $ANTLR start "entryRuleXClosure"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3016:1: entryRuleXClosure returns [EObject current=null] : iv_ruleXClosure= ruleXClosure EOF ;
    public final EObject entryRuleXClosure() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXClosure = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3017:2: (iv_ruleXClosure= ruleXClosure EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3018:2: iv_ruleXClosure= ruleXClosure EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXClosureRule()); 
            }
            pushFollow(FOLLOW_ruleXClosure_in_entryRuleXClosure7262);
            iv_ruleXClosure=ruleXClosure();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXClosure; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXClosure7272); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXClosure"


    // $ANTLR start "ruleXClosure"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3025:1: ruleXClosure returns [EObject current=null] : ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) ;
    public final EObject ruleXClosure() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token lv_explicitSyntax_5_0=null;
        Token otherlv_7=null;
        EObject lv_declaredFormalParameters_2_0 = null;

        EObject lv_declaredFormalParameters_4_0 = null;

        EObject lv_expression_6_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3028:28: ( ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3029:1: ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3029:1: ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3029:2: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']'
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3029:2: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3029:3: ( ( () '[' ) )=> ( () otherlv_1= '[' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3031:5: ( () otherlv_1= '[' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3031:6: () otherlv_1= '['
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3031:6: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3032:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXClosureAccess().getXClosureAction_0_0_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,62,FOLLOW_62_in_ruleXClosure7332); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1());
                  
            }

            }


            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3041:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?
            int alt51=2;
            alt51 = dfa51.predict(input);
            switch (alt51) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3041:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3056:6: ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3056:7: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3056:7: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )?
                    int alt50=2;
                    int LA50_0 = input.LA(1);

                    if ( (LA50_0==RULE_ID||LA50_0==28||LA50_0==48) ) {
                        alt50=1;
                    }
                    switch (alt50) {
                        case 1 :
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3056:8: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3056:8: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3057:1: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3057:1: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3058:3: lv_declaredFormalParameters_2_0= ruleJvmFormalParameter
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleJvmFormalParameter_in_ruleXClosure7405);
                            lv_declaredFormalParameters_2_0=ruleJvmFormalParameter();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXClosureRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"declaredFormalParameters",
                                      		lv_declaredFormalParameters_2_0, 
                                      		"JvmFormalParameter");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3074:2: (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
                            loop49:
                            do {
                                int alt49=2;
                                int LA49_0 = input.LA(1);

                                if ( (LA49_0==29) ) {
                                    alt49=1;
                                }


                                switch (alt49) {
                            	case 1 :
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3074:4: otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
                            	    {
                            	    otherlv_3=(Token)match(input,29,FOLLOW_29_in_ruleXClosure7418); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0());
                            	          
                            	    }
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3078:1: ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3079:1: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
                            	    {
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3079:1: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3080:3: lv_declaredFormalParameters_4_0= ruleJvmFormalParameter
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleJvmFormalParameter_in_ruleXClosure7439);
                            	    lv_declaredFormalParameters_4_0=ruleJvmFormalParameter();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getXClosureRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"declaredFormalParameters",
                            	              		lv_declaredFormalParameters_4_0, 
                            	              		"JvmFormalParameter");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop49;
                                }
                            } while (true);


                            }
                            break;

                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3096:6: ( (lv_explicitSyntax_5_0= '|' ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3097:1: (lv_explicitSyntax_5_0= '|' )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3097:1: (lv_explicitSyntax_5_0= '|' )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3098:3: lv_explicitSyntax_5_0= '|'
                    {
                    lv_explicitSyntax_5_0=(Token)match(input,64,FOLLOW_64_in_ruleXClosure7461); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_explicitSyntax_5_0, grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXClosureRule());
                      	        }
                             		setWithLastConsumed(current, "explicitSyntax", true, "|");
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3111:5: ( (lv_expression_6_0= ruleXExpressionInClosure ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3112:1: (lv_expression_6_0= ruleXExpressionInClosure )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3112:1: (lv_expression_6_0= ruleXExpressionInClosure )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3113:3: lv_expression_6_0= ruleXExpressionInClosure
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpressionInClosure_in_ruleXClosure7498);
            lv_expression_6_0=ruleXExpressionInClosure();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXClosureRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_6_0, 
                      		"XExpressionInClosure");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_7=(Token)match(input,63,FOLLOW_63_in_ruleXClosure7510); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXClosure"


    // $ANTLR start "entryRuleXExpressionInClosure"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3141:1: entryRuleXExpressionInClosure returns [EObject current=null] : iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF ;
    public final EObject entryRuleXExpressionInClosure() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXExpressionInClosure = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3142:2: (iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3143:2: iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXExpressionInClosureRule()); 
            }
            pushFollow(FOLLOW_ruleXExpressionInClosure_in_entryRuleXExpressionInClosure7546);
            iv_ruleXExpressionInClosure=ruleXExpressionInClosure();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXExpressionInClosure; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpressionInClosure7556); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXExpressionInClosure"


    // $ANTLR start "ruleXExpressionInClosure"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3150:1: ruleXExpressionInClosure returns [EObject current=null] : ( () ( ( (lv_expressions_1_0= ruleXExpressionInsideBlock ) ) (otherlv_2= ';' )? )* ) ;
    public final EObject ruleXExpressionInClosure() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject lv_expressions_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3153:28: ( ( () ( ( (lv_expressions_1_0= ruleXExpressionInsideBlock ) ) (otherlv_2= ';' )? )* ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3154:1: ( () ( ( (lv_expressions_1_0= ruleXExpressionInsideBlock ) ) (otherlv_2= ';' )? )* )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3154:1: ( () ( ( (lv_expressions_1_0= ruleXExpressionInsideBlock ) ) (otherlv_2= ';' )? )* )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3154:2: () ( ( (lv_expressions_1_0= ruleXExpressionInsideBlock ) ) (otherlv_2= ';' )? )*
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3154:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3155:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0(),
                          current);
                  
            }

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3160:2: ( ( (lv_expressions_1_0= ruleXExpressionInsideBlock ) ) (otherlv_2= ';' )? )*
            loop53:
            do {
                int alt53=2;
                int LA53_0 = input.LA(1);

                if ( ((LA53_0>=RULE_ID && LA53_0<=RULE_DECIMAL)||LA53_0==14||LA53_0==24||LA53_0==26||LA53_0==28||LA53_0==44||(LA53_0>=52 && LA53_0<=53)||LA53_0==57||(LA53_0>=61 && LA53_0<=62)||LA53_0==66||LA53_0==68||(LA53_0>=71 && LA53_0<=78)||(LA53_0>=80 && LA53_0<=87)) ) {
                    alt53=1;
                }


                switch (alt53) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3160:3: ( (lv_expressions_1_0= ruleXExpressionInsideBlock ) ) (otherlv_2= ';' )?
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3160:3: ( (lv_expressions_1_0= ruleXExpressionInsideBlock ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3161:1: (lv_expressions_1_0= ruleXExpressionInsideBlock )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3161:1: (lv_expressions_1_0= ruleXExpressionInsideBlock )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3162:3: lv_expressions_1_0= ruleXExpressionInsideBlock
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionInsideBlockParserRuleCall_1_0_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXExpressionInsideBlock_in_ruleXExpressionInClosure7612);
            	    lv_expressions_1_0=ruleXExpressionInsideBlock();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXExpressionInClosureRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"expressions",
            	              		lv_expressions_1_0, 
            	              		"XExpressionInsideBlock");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3178:2: (otherlv_2= ';' )?
            	    int alt52=2;
            	    int LA52_0 = input.LA(1);

            	    if ( (LA52_0==65) ) {
            	        alt52=1;
            	    }
            	    switch (alt52) {
            	        case 1 :
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3178:4: otherlv_2= ';'
            	            {
            	            otherlv_2=(Token)match(input,65,FOLLOW_65_in_ruleXExpressionInClosure7625); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
            	                  
            	            }

            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    break loop53;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXExpressionInClosure"


    // $ANTLR start "entryRuleXShortClosure"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3190:1: entryRuleXShortClosure returns [EObject current=null] : iv_ruleXShortClosure= ruleXShortClosure EOF ;
    public final EObject entryRuleXShortClosure() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXShortClosure = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3191:2: (iv_ruleXShortClosure= ruleXShortClosure EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3192:2: iv_ruleXShortClosure= ruleXShortClosure EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXShortClosureRule()); 
            }
            pushFollow(FOLLOW_ruleXShortClosure_in_entryRuleXShortClosure7665);
            iv_ruleXShortClosure=ruleXShortClosure();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXShortClosure; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXShortClosure7675); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXShortClosure"


    // $ANTLR start "ruleXShortClosure"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3199:1: ruleXShortClosure returns [EObject current=null] : ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) ;
    public final EObject ruleXShortClosure() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token lv_explicitSyntax_4_0=null;
        EObject lv_declaredFormalParameters_1_0 = null;

        EObject lv_declaredFormalParameters_3_0 = null;

        EObject lv_expression_5_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3202:28: ( ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3203:1: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3203:1: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3203:2: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3203:2: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3203:3: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3219:6: ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3219:7: () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3219:7: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3220:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0(),
                          current);
                  
            }

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3225:2: ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )?
            int alt55=2;
            int LA55_0 = input.LA(1);

            if ( (LA55_0==RULE_ID||LA55_0==28||LA55_0==48) ) {
                alt55=1;
            }
            switch (alt55) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3225:3: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3225:3: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3226:1: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3226:1: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3227:3: lv_declaredFormalParameters_1_0= ruleJvmFormalParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmFormalParameter_in_ruleXShortClosure7783);
                    lv_declaredFormalParameters_1_0=ruleJvmFormalParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXShortClosureRule());
                      	        }
                             		add(
                             			current, 
                             			"declaredFormalParameters",
                              		lv_declaredFormalParameters_1_0, 
                              		"JvmFormalParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3243:2: (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
                    loop54:
                    do {
                        int alt54=2;
                        int LA54_0 = input.LA(1);

                        if ( (LA54_0==29) ) {
                            alt54=1;
                        }


                        switch (alt54) {
                    	case 1 :
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3243:4: otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
                    	    {
                    	    otherlv_2=(Token)match(input,29,FOLLOW_29_in_ruleXShortClosure7796); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
                    	          
                    	    }
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3247:1: ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3248:1: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
                    	    {
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3248:1: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3249:3: lv_declaredFormalParameters_3_0= ruleJvmFormalParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleJvmFormalParameter_in_ruleXShortClosure7817);
                    	    lv_declaredFormalParameters_3_0=ruleJvmFormalParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXShortClosureRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"declaredFormalParameters",
                    	              		lv_declaredFormalParameters_3_0, 
                    	              		"JvmFormalParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop54;
                        }
                    } while (true);


                    }
                    break;

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3265:6: ( (lv_explicitSyntax_4_0= '|' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3266:1: (lv_explicitSyntax_4_0= '|' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3266:1: (lv_explicitSyntax_4_0= '|' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3267:3: lv_explicitSyntax_4_0= '|'
            {
            lv_explicitSyntax_4_0=(Token)match(input,64,FOLLOW_64_in_ruleXShortClosure7839); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_explicitSyntax_4_0, grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getXShortClosureRule());
              	        }
                     		setWithLastConsumed(current, "explicitSyntax", true, "|");
              	    
            }

            }


            }


            }


            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3280:4: ( (lv_expression_5_0= ruleXExpression ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3281:1: (lv_expression_5_0= ruleXExpression )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3281:1: (lv_expression_5_0= ruleXExpression )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3282:3: lv_expression_5_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXShortClosure7875);
            lv_expression_5_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXShortClosureRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_5_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXShortClosure"


    // $ANTLR start "entryRuleXParenthesizedExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3306:1: entryRuleXParenthesizedExpression returns [EObject current=null] : iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF ;
    public final EObject entryRuleXParenthesizedExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXParenthesizedExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3307:2: (iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3308:2: iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXParenthesizedExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression7911);
            iv_ruleXParenthesizedExpression=ruleXParenthesizedExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXParenthesizedExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXParenthesizedExpression7921); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXParenthesizedExpression"


    // $ANTLR start "ruleXParenthesizedExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3315:1: ruleXParenthesizedExpression returns [EObject current=null] : (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) ;
    public final EObject ruleXParenthesizedExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject this_XExpression_1 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3318:28: ( (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3319:1: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3319:1: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3319:3: otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')'
            {
            otherlv_0=(Token)match(input,28,FOLLOW_28_in_ruleXParenthesizedExpression7958); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
                  
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1()); 
                  
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXParenthesizedExpression7980);
            this_XExpression_1=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XExpression_1; 
                      afterParserOrEnumRuleCall();
                  
            }
            otherlv_2=(Token)match(input,30,FOLLOW_30_in_ruleXParenthesizedExpression7991); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXParenthesizedExpression"


    // $ANTLR start "entryRuleXIfExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3344:1: entryRuleXIfExpression returns [EObject current=null] : iv_ruleXIfExpression= ruleXIfExpression EOF ;
    public final EObject entryRuleXIfExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXIfExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3345:2: (iv_ruleXIfExpression= ruleXIfExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3346:2: iv_ruleXIfExpression= ruleXIfExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXIfExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression8027);
            iv_ruleXIfExpression=ruleXIfExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXIfExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXIfExpression8037); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXIfExpression"


    // $ANTLR start "ruleXIfExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3353:1: ruleXIfExpression returns [EObject current=null] : ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) ;
    public final EObject ruleXIfExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_if_3_0 = null;

        EObject lv_then_5_0 = null;

        EObject lv_else_7_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3356:28: ( ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3357:1: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3357:1: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3357:2: () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3357:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3358:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,66,FOLLOW_66_in_ruleXIfExpression8083); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,28,FOLLOW_28_in_ruleXIfExpression8095); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3371:1: ( (lv_if_3_0= ruleXExpression ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3372:1: (lv_if_3_0= ruleXExpression )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3372:1: (lv_if_3_0= ruleXExpression )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3373:3: lv_if_3_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXIfExpression8116);
            lv_if_3_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"if",
                      		lv_if_3_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,30,FOLLOW_30_in_ruleXIfExpression8128); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3393:1: ( (lv_then_5_0= ruleXExpression ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3394:1: (lv_then_5_0= ruleXExpression )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3394:1: (lv_then_5_0= ruleXExpression )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3395:3: lv_then_5_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXIfExpression8149);
            lv_then_5_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"then",
                      		lv_then_5_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3411:2: ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
            int alt56=2;
            int LA56_0 = input.LA(1);

            if ( (LA56_0==67) ) {
                int LA56_1 = input.LA(2);

                if ( (synpred22_InternalMyDsl()) ) {
                    alt56=1;
                }
            }
            switch (alt56) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3411:3: ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3411:3: ( ( 'else' )=>otherlv_6= 'else' )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3411:4: ( 'else' )=>otherlv_6= 'else'
                    {
                    otherlv_6=(Token)match(input,67,FOLLOW_67_in_ruleXIfExpression8170); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
                          
                    }

                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3416:2: ( (lv_else_7_0= ruleXExpression ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3417:1: (lv_else_7_0= ruleXExpression )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3417:1: (lv_else_7_0= ruleXExpression )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3418:3: lv_else_7_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXIfExpression8192);
                    lv_else_7_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"else",
                              		lv_else_7_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXIfExpression"


    // $ANTLR start "entryRuleXSwitchExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3442:1: entryRuleXSwitchExpression returns [EObject current=null] : iv_ruleXSwitchExpression= ruleXSwitchExpression EOF ;
    public final EObject entryRuleXSwitchExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXSwitchExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3443:2: (iv_ruleXSwitchExpression= ruleXSwitchExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3444:2: iv_ruleXSwitchExpression= ruleXSwitchExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXSwitchExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXSwitchExpression_in_entryRuleXSwitchExpression8230);
            iv_ruleXSwitchExpression=ruleXSwitchExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXSwitchExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXSwitchExpression8240); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXSwitchExpression"


    // $ANTLR start "ruleXSwitchExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3451:1: ruleXSwitchExpression returns [EObject current=null] : ( () otherlv_1= 'switch' ( ( ( ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' ) )? ( (lv_switch_4_0= ruleXExpression ) ) ) | ( ( ( ( '(' ( ( ruleValidID ) ) ':' ) )=> (otherlv_5= '(' ( (lv_localVarName_6_0= ruleValidID ) ) otherlv_7= ':' ) ) ( (lv_switch_8_0= ruleXExpression ) ) otherlv_9= ')' ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )+ (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' ) ;
    public final EObject ruleXSwitchExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        AntlrDatatypeRuleToken lv_localVarName_2_0 = null;

        EObject lv_switch_4_0 = null;

        AntlrDatatypeRuleToken lv_localVarName_6_0 = null;

        EObject lv_switch_8_0 = null;

        EObject lv_cases_11_0 = null;

        EObject lv_default_14_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3454:28: ( ( () otherlv_1= 'switch' ( ( ( ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' ) )? ( (lv_switch_4_0= ruleXExpression ) ) ) | ( ( ( ( '(' ( ( ruleValidID ) ) ':' ) )=> (otherlv_5= '(' ( (lv_localVarName_6_0= ruleValidID ) ) otherlv_7= ':' ) ) ( (lv_switch_8_0= ruleXExpression ) ) otherlv_9= ')' ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )+ (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3455:1: ( () otherlv_1= 'switch' ( ( ( ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' ) )? ( (lv_switch_4_0= ruleXExpression ) ) ) | ( ( ( ( '(' ( ( ruleValidID ) ) ':' ) )=> (otherlv_5= '(' ( (lv_localVarName_6_0= ruleValidID ) ) otherlv_7= ':' ) ) ( (lv_switch_8_0= ruleXExpression ) ) otherlv_9= ')' ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )+ (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3455:1: ( () otherlv_1= 'switch' ( ( ( ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' ) )? ( (lv_switch_4_0= ruleXExpression ) ) ) | ( ( ( ( '(' ( ( ruleValidID ) ) ':' ) )=> (otherlv_5= '(' ( (lv_localVarName_6_0= ruleValidID ) ) otherlv_7= ':' ) ) ( (lv_switch_8_0= ruleXExpression ) ) otherlv_9= ')' ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )+ (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3455:2: () otherlv_1= 'switch' ( ( ( ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' ) )? ( (lv_switch_4_0= ruleXExpression ) ) ) | ( ( ( ( '(' ( ( ruleValidID ) ) ':' ) )=> (otherlv_5= '(' ( (lv_localVarName_6_0= ruleValidID ) ) otherlv_7= ':' ) ) ( (lv_switch_8_0= ruleXExpression ) ) otherlv_9= ')' ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )+ (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}'
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3455:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3456:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,68,FOLLOW_68_in_ruleXSwitchExpression8286); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3465:1: ( ( ( ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' ) )? ( (lv_switch_4_0= ruleXExpression ) ) ) | ( ( ( ( '(' ( ( ruleValidID ) ) ':' ) )=> (otherlv_5= '(' ( (lv_localVarName_6_0= ruleValidID ) ) otherlv_7= ':' ) ) ( (lv_switch_8_0= ruleXExpression ) ) otherlv_9= ')' ) )
            int alt58=2;
            int LA58_0 = input.LA(1);

            if ( ((LA58_0>=RULE_ID && LA58_0<=RULE_DECIMAL)||LA58_0==14||LA58_0==44||(LA58_0>=52 && LA58_0<=53)||LA58_0==57||(LA58_0>=61 && LA58_0<=62)||LA58_0==66||LA58_0==68||(LA58_0>=71 && LA58_0<=78)||(LA58_0>=80 && LA58_0<=87)) ) {
                alt58=1;
            }
            else if ( (LA58_0==28) ) {
                int LA58_2 = input.LA(2);

                if ( (LA58_2==RULE_ID) ) {
                    int LA58_3 = input.LA(3);

                    if ( ((LA58_3>=17 && LA58_3<=18)||LA58_3==28||(LA58_3>=30 && LA58_3<=56)||(LA58_3>=58 && LA58_3<=60)||LA58_3==62||LA58_3==79) ) {
                        alt58=1;
                    }
                    else if ( (LA58_3==25) && (synpred24_InternalMyDsl())) {
                        alt58=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 58, 3, input);

                        throw nvae;
                    }
                }
                else if ( ((LA58_2>=RULE_STRING && LA58_2<=RULE_DECIMAL)||LA58_2==14||LA58_2==28||LA58_2==44||(LA58_2>=52 && LA58_2<=53)||LA58_2==57||(LA58_2>=61 && LA58_2<=62)||LA58_2==66||LA58_2==68||(LA58_2>=71 && LA58_2<=78)||(LA58_2>=80 && LA58_2<=87)) ) {
                    alt58=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 58, 2, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 58, 0, input);

                throw nvae;
            }
            switch (alt58) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3465:2: ( ( ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' ) )? ( (lv_switch_4_0= ruleXExpression ) ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3465:2: ( ( ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' ) )? ( (lv_switch_4_0= ruleXExpression ) ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3465:3: ( ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' ) )? ( (lv_switch_4_0= ruleXExpression ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3465:3: ( ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' ) )?
                    int alt57=2;
                    int LA57_0 = input.LA(1);

                    if ( (LA57_0==RULE_ID) ) {
                        int LA57_1 = input.LA(2);

                        if ( (LA57_1==25) && (synpred23_InternalMyDsl())) {
                            alt57=1;
                        }
                    }
                    switch (alt57) {
                        case 1 :
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3465:4: ( ( ( ( ruleValidID ) ) ':' ) )=> ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3470:5: ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3470:6: ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':'
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3470:6: ( (lv_localVarName_2_0= ruleValidID ) )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3471:1: (lv_localVarName_2_0= ruleValidID )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3471:1: (lv_localVarName_2_0= ruleValidID )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3472:3: lv_localVarName_2_0= ruleValidID
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getLocalVarNameValidIDParserRuleCall_2_0_0_0_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleValidID_in_ruleXSwitchExpression8329);
                            lv_localVarName_2_0=ruleValidID();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"localVarName",
                                      		lv_localVarName_2_0, 
                                      		"ValidID");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            otherlv_3=(Token)match(input,25,FOLLOW_25_in_ruleXSwitchExpression8341); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_3, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_1());
                                  
                            }

                            }


                            }
                            break;

                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3492:4: ( (lv_switch_4_0= ruleXExpression ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3493:1: (lv_switch_4_0= ruleXExpression )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3493:1: (lv_switch_4_0= ruleXExpression )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3494:3: lv_switch_4_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXSwitchExpression8365);
                    lv_switch_4_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"switch",
                              		lv_switch_4_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3511:6: ( ( ( ( '(' ( ( ruleValidID ) ) ':' ) )=> (otherlv_5= '(' ( (lv_localVarName_6_0= ruleValidID ) ) otherlv_7= ':' ) ) ( (lv_switch_8_0= ruleXExpression ) ) otherlv_9= ')' )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3511:6: ( ( ( ( '(' ( ( ruleValidID ) ) ':' ) )=> (otherlv_5= '(' ( (lv_localVarName_6_0= ruleValidID ) ) otherlv_7= ':' ) ) ( (lv_switch_8_0= ruleXExpression ) ) otherlv_9= ')' )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3511:7: ( ( ( '(' ( ( ruleValidID ) ) ':' ) )=> (otherlv_5= '(' ( (lv_localVarName_6_0= ruleValidID ) ) otherlv_7= ':' ) ) ( (lv_switch_8_0= ruleXExpression ) ) otherlv_9= ')'
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3511:7: ( ( ( '(' ( ( ruleValidID ) ) ':' ) )=> (otherlv_5= '(' ( (lv_localVarName_6_0= ruleValidID ) ) otherlv_7= ':' ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3511:8: ( ( '(' ( ( ruleValidID ) ) ':' ) )=> (otherlv_5= '(' ( (lv_localVarName_6_0= ruleValidID ) ) otherlv_7= ':' )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3517:5: (otherlv_5= '(' ( (lv_localVarName_6_0= ruleValidID ) ) otherlv_7= ':' )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3517:7: otherlv_5= '(' ( (lv_localVarName_6_0= ruleValidID ) ) otherlv_7= ':'
                    {
                    otherlv_5=(Token)match(input,28,FOLLOW_28_in_ruleXSwitchExpression8409); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_1_0_0_0());
                          
                    }
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3521:1: ( (lv_localVarName_6_0= ruleValidID ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3522:1: (lv_localVarName_6_0= ruleValidID )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3522:1: (lv_localVarName_6_0= ruleValidID )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3523:3: lv_localVarName_6_0= ruleValidID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getLocalVarNameValidIDParserRuleCall_2_1_0_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleValidID_in_ruleXSwitchExpression8430);
                    lv_localVarName_6_0=ruleValidID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"localVarName",
                              		lv_localVarName_6_0, 
                              		"ValidID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_7=(Token)match(input,25,FOLLOW_25_in_ruleXSwitchExpression8442); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_2());
                          
                    }

                    }


                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3543:3: ( (lv_switch_8_0= ruleXExpression ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3544:1: (lv_switch_8_0= ruleXExpression )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3544:1: (lv_switch_8_0= ruleXExpression )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3545:3: lv_switch_8_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXSwitchExpression8465);
                    lv_switch_8_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"switch",
                              		lv_switch_8_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_9=(Token)match(input,30,FOLLOW_30_in_ruleXSwitchExpression8477); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_9, grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_1_2());
                          
                    }

                    }


                    }
                    break;

            }

            otherlv_10=(Token)match(input,14,FOLLOW_14_in_ruleXSwitchExpression8491); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_10, grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3569:1: ( (lv_cases_11_0= ruleXCasePart ) )+
            int cnt59=0;
            loop59:
            do {
                int alt59=2;
                int LA59_0 = input.LA(1);

                if ( (LA59_0==RULE_ID||LA59_0==25||LA59_0==28||LA59_0==48||LA59_0==70) ) {
                    alt59=1;
                }


                switch (alt59) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3570:1: (lv_cases_11_0= ruleXCasePart )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3570:1: (lv_cases_11_0= ruleXCasePart )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3571:3: lv_cases_11_0= ruleXCasePart
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXCasePart_in_ruleXSwitchExpression8512);
            	    lv_cases_11_0=ruleXCasePart();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"cases",
            	              		lv_cases_11_0, 
            	              		"XCasePart");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt59 >= 1 ) break loop59;
            	    if (state.backtracking>0) {state.failed=true; return current;}
                        EarlyExitException eee =
                            new EarlyExitException(59, input);
                        throw eee;
                }
                cnt59++;
            } while (true);

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3587:3: (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )?
            int alt60=2;
            int LA60_0 = input.LA(1);

            if ( (LA60_0==69) ) {
                alt60=1;
            }
            switch (alt60) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3587:5: otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) )
                    {
                    otherlv_12=(Token)match(input,69,FOLLOW_69_in_ruleXSwitchExpression8526); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_12, grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0());
                          
                    }
                    otherlv_13=(Token)match(input,25,FOLLOW_25_in_ruleXSwitchExpression8538); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_13, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1());
                          
                    }
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3595:1: ( (lv_default_14_0= ruleXExpression ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3596:1: (lv_default_14_0= ruleXExpression )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3596:1: (lv_default_14_0= ruleXExpression )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3597:3: lv_default_14_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXSwitchExpression8559);
                    lv_default_14_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"default",
                              		lv_default_14_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_15=(Token)match(input,15,FOLLOW_15_in_ruleXSwitchExpression8573); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_15, grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXSwitchExpression"


    // $ANTLR start "entryRuleXCasePart"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3625:1: entryRuleXCasePart returns [EObject current=null] : iv_ruleXCasePart= ruleXCasePart EOF ;
    public final EObject entryRuleXCasePart() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXCasePart = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3626:2: (iv_ruleXCasePart= ruleXCasePart EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3627:2: iv_ruleXCasePart= ruleXCasePart EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXCasePartRule()); 
            }
            pushFollow(FOLLOW_ruleXCasePart_in_entryRuleXCasePart8609);
            iv_ruleXCasePart=ruleXCasePart();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXCasePart; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXCasePart8619); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXCasePart"


    // $ANTLR start "ruleXCasePart"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3634:1: ruleXCasePart returns [EObject current=null] : ( ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )? (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )? otherlv_3= ':' ( (lv_then_4_0= ruleXExpression ) ) ) ;
    public final EObject ruleXCasePart() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_typeGuard_0_0 = null;

        EObject lv_case_2_0 = null;

        EObject lv_then_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3637:28: ( ( ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )? (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )? otherlv_3= ':' ( (lv_then_4_0= ruleXExpression ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3638:1: ( ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )? (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )? otherlv_3= ':' ( (lv_then_4_0= ruleXExpression ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3638:1: ( ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )? (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )? otherlv_3= ':' ( (lv_then_4_0= ruleXExpression ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3638:2: ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )? (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )? otherlv_3= ':' ( (lv_then_4_0= ruleXExpression ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3638:2: ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )?
            int alt61=2;
            int LA61_0 = input.LA(1);

            if ( (LA61_0==RULE_ID||LA61_0==28||LA61_0==48) ) {
                alt61=1;
            }
            switch (alt61) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3639:1: (lv_typeGuard_0_0= ruleJvmTypeReference )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3639:1: (lv_typeGuard_0_0= ruleJvmTypeReference )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3640:3: lv_typeGuard_0_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXCasePart8665);
                    lv_typeGuard_0_0=ruleJvmTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXCasePartRule());
                      	        }
                             		set(
                             			current, 
                             			"typeGuard",
                              		lv_typeGuard_0_0, 
                              		"JvmTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3656:3: (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )?
            int alt62=2;
            int LA62_0 = input.LA(1);

            if ( (LA62_0==70) ) {
                alt62=1;
            }
            switch (alt62) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3656:5: otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) )
                    {
                    otherlv_1=(Token)match(input,70,FOLLOW_70_in_ruleXCasePart8679); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getXCasePartAccess().getCaseKeyword_1_0());
                          
                    }
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3660:1: ( (lv_case_2_0= ruleXExpression ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3661:1: (lv_case_2_0= ruleXExpression )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3661:1: (lv_case_2_0= ruleXExpression )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3662:3: lv_case_2_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXCasePart8700);
                    lv_case_2_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXCasePartRule());
                      	        }
                             		set(
                             			current, 
                             			"case",
                              		lv_case_2_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_3=(Token)match(input,25,FOLLOW_25_in_ruleXCasePart8714); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getXCasePartAccess().getColonKeyword_2());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3682:1: ( (lv_then_4_0= ruleXExpression ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3683:1: (lv_then_4_0= ruleXExpression )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3683:1: (lv_then_4_0= ruleXExpression )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3684:3: lv_then_4_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXCasePart8735);
            lv_then_4_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXCasePartRule());
              	        }
                     		set(
                     			current, 
                     			"then",
                      		lv_then_4_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXCasePart"


    // $ANTLR start "entryRuleXForLoopExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3708:1: entryRuleXForLoopExpression returns [EObject current=null] : iv_ruleXForLoopExpression= ruleXForLoopExpression EOF ;
    public final EObject entryRuleXForLoopExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXForLoopExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3709:2: (iv_ruleXForLoopExpression= ruleXForLoopExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3710:2: iv_ruleXForLoopExpression= ruleXForLoopExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXForLoopExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXForLoopExpression_in_entryRuleXForLoopExpression8771);
            iv_ruleXForLoopExpression=ruleXForLoopExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXForLoopExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXForLoopExpression8781); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXForLoopExpression"


    // $ANTLR start "ruleXForLoopExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3717:1: ruleXForLoopExpression returns [EObject current=null] : ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) ;
    public final EObject ruleXForLoopExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_declaredParam_3_0 = null;

        EObject lv_forExpression_5_0 = null;

        EObject lv_eachExpression_7_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3720:28: ( ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3721:1: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3721:1: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3721:2: () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3721:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3722:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,71,FOLLOW_71_in_ruleXForLoopExpression8827); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXForLoopExpressionAccess().getForKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,28,FOLLOW_28_in_ruleXForLoopExpression8839); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_2());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3735:1: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3736:1: (lv_declaredParam_3_0= ruleJvmFormalParameter )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3736:1: (lv_declaredParam_3_0= ruleJvmFormalParameter )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3737:3: lv_declaredParam_3_0= ruleJvmFormalParameter
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmFormalParameter_in_ruleXForLoopExpression8860);
            lv_declaredParam_3_0=ruleJvmFormalParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"declaredParam",
                      		lv_declaredParam_3_0, 
                      		"JvmFormalParameter");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,25,FOLLOW_25_in_ruleXForLoopExpression8872); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXForLoopExpressionAccess().getColonKeyword_4());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3757:1: ( (lv_forExpression_5_0= ruleXExpression ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3758:1: (lv_forExpression_5_0= ruleXExpression )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3758:1: (lv_forExpression_5_0= ruleXExpression )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3759:3: lv_forExpression_5_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXForLoopExpression8893);
            lv_forExpression_5_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"forExpression",
                      		lv_forExpression_5_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_6=(Token)match(input,30,FOLLOW_30_in_ruleXForLoopExpression8905); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_6());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3779:1: ( (lv_eachExpression_7_0= ruleXExpression ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3780:1: (lv_eachExpression_7_0= ruleXExpression )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3780:1: (lv_eachExpression_7_0= ruleXExpression )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3781:3: lv_eachExpression_7_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_7_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXForLoopExpression8926);
            lv_eachExpression_7_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"eachExpression",
                      		lv_eachExpression_7_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXForLoopExpression"


    // $ANTLR start "entryRuleXWhileExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3805:1: entryRuleXWhileExpression returns [EObject current=null] : iv_ruleXWhileExpression= ruleXWhileExpression EOF ;
    public final EObject entryRuleXWhileExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXWhileExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3806:2: (iv_ruleXWhileExpression= ruleXWhileExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3807:2: iv_ruleXWhileExpression= ruleXWhileExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXWhileExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression8962);
            iv_ruleXWhileExpression=ruleXWhileExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXWhileExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXWhileExpression8972); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXWhileExpression"


    // $ANTLR start "ruleXWhileExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3814:1: ruleXWhileExpression returns [EObject current=null] : ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) ;
    public final EObject ruleXWhileExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_predicate_3_0 = null;

        EObject lv_body_5_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3817:28: ( ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3818:1: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3818:1: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3818:2: () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3818:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3819:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,72,FOLLOW_72_in_ruleXWhileExpression9018); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,28,FOLLOW_28_in_ruleXWhileExpression9030); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3832:1: ( (lv_predicate_3_0= ruleXExpression ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3833:1: (lv_predicate_3_0= ruleXExpression )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3833:1: (lv_predicate_3_0= ruleXExpression )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3834:3: lv_predicate_3_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXWhileExpression9051);
            lv_predicate_3_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"predicate",
                      		lv_predicate_3_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,30,FOLLOW_30_in_ruleXWhileExpression9063); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3854:1: ( (lv_body_5_0= ruleXExpression ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3855:1: (lv_body_5_0= ruleXExpression )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3855:1: (lv_body_5_0= ruleXExpression )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3856:3: lv_body_5_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXWhileExpression9084);
            lv_body_5_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"body",
                      		lv_body_5_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXWhileExpression"


    // $ANTLR start "entryRuleXDoWhileExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3880:1: entryRuleXDoWhileExpression returns [EObject current=null] : iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF ;
    public final EObject entryRuleXDoWhileExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXDoWhileExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3881:2: (iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3882:2: iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXDoWhileExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXDoWhileExpression_in_entryRuleXDoWhileExpression9120);
            iv_ruleXDoWhileExpression=ruleXDoWhileExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXDoWhileExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXDoWhileExpression9130); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXDoWhileExpression"


    // $ANTLR start "ruleXDoWhileExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3889:1: ruleXDoWhileExpression returns [EObject current=null] : ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) ;
    public final EObject ruleXDoWhileExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_body_2_0 = null;

        EObject lv_predicate_5_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3892:28: ( ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3893:1: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3893:1: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3893:2: () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')'
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3893:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3894:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,73,FOLLOW_73_in_ruleXDoWhileExpression9176); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3903:1: ( (lv_body_2_0= ruleXExpression ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3904:1: (lv_body_2_0= ruleXExpression )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3904:1: (lv_body_2_0= ruleXExpression )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3905:3: lv_body_2_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXDoWhileExpression9197);
            lv_body_2_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"body",
                      		lv_body_2_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,72,FOLLOW_72_in_ruleXDoWhileExpression9209); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3());
                  
            }
            otherlv_4=(Token)match(input,28,FOLLOW_28_in_ruleXDoWhileExpression9221); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3929:1: ( (lv_predicate_5_0= ruleXExpression ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3930:1: (lv_predicate_5_0= ruleXExpression )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3930:1: (lv_predicate_5_0= ruleXExpression )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3931:3: lv_predicate_5_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXDoWhileExpression9242);
            lv_predicate_5_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"predicate",
                      		lv_predicate_5_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_6=(Token)match(input,30,FOLLOW_30_in_ruleXDoWhileExpression9254); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXDoWhileExpression"


    // $ANTLR start "entryRuleXBlockExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3959:1: entryRuleXBlockExpression returns [EObject current=null] : iv_ruleXBlockExpression= ruleXBlockExpression EOF ;
    public final EObject entryRuleXBlockExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXBlockExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3960:2: (iv_ruleXBlockExpression= ruleXBlockExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3961:2: iv_ruleXBlockExpression= ruleXBlockExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXBlockExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression9290);
            iv_ruleXBlockExpression=ruleXBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXBlockExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXBlockExpression9300); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXBlockExpression"


    // $ANTLR start "ruleXBlockExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3968:1: ruleXBlockExpression returns [EObject current=null] : ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) ;
    public final EObject ruleXBlockExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        EObject lv_expressions_2_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3971:28: ( ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3972:1: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3972:1: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3972:2: () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )* otherlv_4= '}'
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3972:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3973:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,14,FOLLOW_14_in_ruleXBlockExpression9346); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3982:1: ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )*
            loop64:
            do {
                int alt64=2;
                int LA64_0 = input.LA(1);

                if ( ((LA64_0>=RULE_ID && LA64_0<=RULE_DECIMAL)||LA64_0==14||LA64_0==24||LA64_0==26||LA64_0==28||LA64_0==44||(LA64_0>=52 && LA64_0<=53)||LA64_0==57||(LA64_0>=61 && LA64_0<=62)||LA64_0==66||LA64_0==68||(LA64_0>=71 && LA64_0<=78)||(LA64_0>=80 && LA64_0<=87)) ) {
                    alt64=1;
                }


                switch (alt64) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3982:2: ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )?
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3982:2: ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3983:1: (lv_expressions_2_0= ruleXExpressionInsideBlock )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3983:1: (lv_expressions_2_0= ruleXExpressionInsideBlock )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3984:3: lv_expressions_2_0= ruleXExpressionInsideBlock
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionInsideBlockParserRuleCall_2_0_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXExpressionInsideBlock_in_ruleXBlockExpression9368);
            	    lv_expressions_2_0=ruleXExpressionInsideBlock();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXBlockExpressionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"expressions",
            	              		lv_expressions_2_0, 
            	              		"XExpressionInsideBlock");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4000:2: (otherlv_3= ';' )?
            	    int alt63=2;
            	    int LA63_0 = input.LA(1);

            	    if ( (LA63_0==65) ) {
            	        alt63=1;
            	    }
            	    switch (alt63) {
            	        case 1 :
            	            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4000:4: otherlv_3= ';'
            	            {
            	            otherlv_3=(Token)match(input,65,FOLLOW_65_in_ruleXBlockExpression9381); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
            	                  
            	            }

            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    break loop64;
                }
            } while (true);

            otherlv_4=(Token)match(input,15,FOLLOW_15_in_ruleXBlockExpression9397); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXBlockExpression"


    // $ANTLR start "entryRuleXExpressionInsideBlock"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4016:1: entryRuleXExpressionInsideBlock returns [EObject current=null] : iv_ruleXExpressionInsideBlock= ruleXExpressionInsideBlock EOF ;
    public final EObject entryRuleXExpressionInsideBlock() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXExpressionInsideBlock = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4017:2: (iv_ruleXExpressionInsideBlock= ruleXExpressionInsideBlock EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4018:2: iv_ruleXExpressionInsideBlock= ruleXExpressionInsideBlock EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXExpressionInsideBlockRule()); 
            }
            pushFollow(FOLLOW_ruleXExpressionInsideBlock_in_entryRuleXExpressionInsideBlock9433);
            iv_ruleXExpressionInsideBlock=ruleXExpressionInsideBlock();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXExpressionInsideBlock; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpressionInsideBlock9443); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXExpressionInsideBlock"


    // $ANTLR start "ruleXExpressionInsideBlock"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4025:1: ruleXExpressionInsideBlock returns [EObject current=null] : (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) ;
    public final EObject ruleXExpressionInsideBlock() throws RecognitionException {
        EObject current = null;

        EObject this_XVariableDeclaration_0 = null;

        EObject this_XExpression_1 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4028:28: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4029:1: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4029:1: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
            int alt65=2;
            int LA65_0 = input.LA(1);

            if ( (LA65_0==24||LA65_0==26) ) {
                alt65=1;
            }
            else if ( ((LA65_0>=RULE_ID && LA65_0<=RULE_DECIMAL)||LA65_0==14||LA65_0==28||LA65_0==44||(LA65_0>=52 && LA65_0<=53)||LA65_0==57||(LA65_0>=61 && LA65_0<=62)||LA65_0==66||LA65_0==68||(LA65_0>=71 && LA65_0<=78)||(LA65_0>=80 && LA65_0<=87)) ) {
                alt65=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 65, 0, input);

                throw nvae;
            }
            switch (alt65) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4030:5: this_XVariableDeclaration_0= ruleXVariableDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXExpressionInsideBlockAccess().getXVariableDeclarationParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXVariableDeclaration_in_ruleXExpressionInsideBlock9490);
                    this_XVariableDeclaration_0=ruleXVariableDeclaration();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XVariableDeclaration_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4040:5: this_XExpression_1= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXExpressionInsideBlockAccess().getXExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXExpressionInsideBlock9517);
                    this_XExpression_1=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXExpressionInsideBlock"


    // $ANTLR start "entryRuleXVariableDeclaration"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4056:1: entryRuleXVariableDeclaration returns [EObject current=null] : iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF ;
    public final EObject entryRuleXVariableDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXVariableDeclaration = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4057:2: (iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4058:2: iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXVariableDeclarationRule()); 
            }
            pushFollow(FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration9552);
            iv_ruleXVariableDeclaration=ruleXVariableDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXVariableDeclaration; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXVariableDeclaration9562); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXVariableDeclaration"


    // $ANTLR start "ruleXVariableDeclaration"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4065:1: ruleXVariableDeclaration returns [EObject current=null] : ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) ;
    public final EObject ruleXVariableDeclaration() throws RecognitionException {
        EObject current = null;

        Token lv_writeable_1_0=null;
        Token otherlv_2=null;
        Token otherlv_6=null;
        EObject lv_type_3_0 = null;

        AntlrDatatypeRuleToken lv_name_4_0 = null;

        AntlrDatatypeRuleToken lv_name_5_0 = null;

        EObject lv_right_7_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4068:28: ( ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4069:1: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4069:1: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4069:2: () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4069:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4070:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0(),
                          current);
                  
            }

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4075:2: ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' )
            int alt66=2;
            int LA66_0 = input.LA(1);

            if ( (LA66_0==24) ) {
                alt66=1;
            }
            else if ( (LA66_0==26) ) {
                alt66=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 66, 0, input);

                throw nvae;
            }
            switch (alt66) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4075:3: ( (lv_writeable_1_0= 'var' ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4075:3: ( (lv_writeable_1_0= 'var' ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4076:1: (lv_writeable_1_0= 'var' )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4076:1: (lv_writeable_1_0= 'var' )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4077:3: lv_writeable_1_0= 'var'
                    {
                    lv_writeable_1_0=(Token)match(input,24,FOLLOW_24_in_ruleXVariableDeclaration9615); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_writeable_1_0, grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		setWithLastConsumed(current, "writeable", true, "var");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4091:7: otherlv_2= 'val'
                    {
                    otherlv_2=(Token)match(input,26,FOLLOW_26_in_ruleXVariableDeclaration9646); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1());
                          
                    }

                    }
                    break;

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4095:2: ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) )
            int alt67=2;
            int LA67_0 = input.LA(1);

            if ( (LA67_0==RULE_ID) ) {
                int LA67_1 = input.LA(2);

                if ( (synpred25_InternalMyDsl()) ) {
                    alt67=1;
                }
                else if ( (true) ) {
                    alt67=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 67, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA67_0==28) && (synpred25_InternalMyDsl())) {
                alt67=1;
            }
            else if ( (LA67_0==48) && (synpred25_InternalMyDsl())) {
                alt67=1;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 67, 0, input);

                throw nvae;
            }
            switch (alt67) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4095:3: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4095:3: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4095:4: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4103:6: ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4103:7: ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4103:7: ( (lv_type_3_0= ruleJvmTypeReference ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4104:1: (lv_type_3_0= ruleJvmTypeReference )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4104:1: (lv_type_3_0= ruleJvmTypeReference )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4105:3: lv_type_3_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXVariableDeclaration9694);
                    lv_type_3_0=ruleJvmTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"type",
                              		lv_type_3_0, 
                              		"JvmTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4121:2: ( (lv_name_4_0= ruleValidID ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4122:1: (lv_name_4_0= ruleValidID )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4122:1: (lv_name_4_0= ruleValidID )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4123:3: lv_name_4_0= ruleValidID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleValidID_in_ruleXVariableDeclaration9715);
                    lv_name_4_0=ruleValidID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_4_0, 
                              		"ValidID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4140:6: ( (lv_name_5_0= ruleValidID ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4140:6: ( (lv_name_5_0= ruleValidID ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4141:1: (lv_name_5_0= ruleValidID )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4141:1: (lv_name_5_0= ruleValidID )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4142:3: lv_name_5_0= ruleValidID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleValidID_in_ruleXVariableDeclaration9744);
                    lv_name_5_0=ruleValidID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_5_0, 
                              		"ValidID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4158:3: (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
            int alt68=2;
            int LA68_0 = input.LA(1);

            if ( (LA68_0==31) ) {
                alt68=1;
            }
            switch (alt68) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4158:5: otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) )
                    {
                    otherlv_6=(Token)match(input,31,FOLLOW_31_in_ruleXVariableDeclaration9758); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0());
                          
                    }
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4162:1: ( (lv_right_7_0= ruleXExpression ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4163:1: (lv_right_7_0= ruleXExpression )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4163:1: (lv_right_7_0= ruleXExpression )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4164:3: lv_right_7_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXVariableDeclaration9779);
                    lv_right_7_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"right",
                              		lv_right_7_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXVariableDeclaration"


    // $ANTLR start "entryRuleJvmFormalParameter"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4188:1: entryRuleJvmFormalParameter returns [EObject current=null] : iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF ;
    public final EObject entryRuleJvmFormalParameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmFormalParameter = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4189:2: (iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4190:2: iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmFormalParameterRule()); 
            }
            pushFollow(FOLLOW_ruleJvmFormalParameter_in_entryRuleJvmFormalParameter9817);
            iv_ruleJvmFormalParameter=ruleJvmFormalParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmFormalParameter; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmFormalParameter9827); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmFormalParameter"


    // $ANTLR start "ruleJvmFormalParameter"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4197:1: ruleJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) ;
    public final EObject ruleJvmFormalParameter() throws RecognitionException {
        EObject current = null;

        EObject lv_parameterType_0_0 = null;

        AntlrDatatypeRuleToken lv_name_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4200:28: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4201:1: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4201:1: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4201:2: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4201:2: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )?
            int alt69=2;
            int LA69_0 = input.LA(1);

            if ( (LA69_0==RULE_ID) ) {
                int LA69_1 = input.LA(2);

                if ( (LA69_1==RULE_ID||LA69_1==17||LA69_1==44||LA69_1==62) ) {
                    alt69=1;
                }
            }
            else if ( (LA69_0==28||LA69_0==48) ) {
                alt69=1;
            }
            switch (alt69) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4202:1: (lv_parameterType_0_0= ruleJvmTypeReference )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4202:1: (lv_parameterType_0_0= ruleJvmTypeReference )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4203:3: lv_parameterType_0_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleJvmFormalParameter9873);
                    lv_parameterType_0_0=ruleJvmTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"parameterType",
                              		lv_parameterType_0_0, 
                              		"JvmTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4219:3: ( (lv_name_1_0= ruleValidID ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4220:1: (lv_name_1_0= ruleValidID )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4220:1: (lv_name_1_0= ruleValidID )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4221:3: lv_name_1_0= ruleValidID
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleValidID_in_ruleJvmFormalParameter9895);
            lv_name_1_0=ruleValidID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ValidID");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmFormalParameter"


    // $ANTLR start "entryRuleFullJvmFormalParameter"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4245:1: entryRuleFullJvmFormalParameter returns [EObject current=null] : iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF ;
    public final EObject entryRuleFullJvmFormalParameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFullJvmFormalParameter = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4246:2: (iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4247:2: iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getFullJvmFormalParameterRule()); 
            }
            pushFollow(FOLLOW_ruleFullJvmFormalParameter_in_entryRuleFullJvmFormalParameter9931);
            iv_ruleFullJvmFormalParameter=ruleFullJvmFormalParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleFullJvmFormalParameter; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleFullJvmFormalParameter9941); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFullJvmFormalParameter"


    // $ANTLR start "ruleFullJvmFormalParameter"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4254:1: ruleFullJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) ;
    public final EObject ruleFullJvmFormalParameter() throws RecognitionException {
        EObject current = null;

        EObject lv_parameterType_0_0 = null;

        AntlrDatatypeRuleToken lv_name_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4257:28: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4258:1: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4258:1: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4258:2: ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4258:2: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4259:1: (lv_parameterType_0_0= ruleJvmTypeReference )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4259:1: (lv_parameterType_0_0= ruleJvmTypeReference )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4260:3: lv_parameterType_0_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleFullJvmFormalParameter9987);
            lv_parameterType_0_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
              	        }
                     		set(
                     			current, 
                     			"parameterType",
                      		lv_parameterType_0_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4276:2: ( (lv_name_1_0= ruleValidID ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4277:1: (lv_name_1_0= ruleValidID )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4277:1: (lv_name_1_0= ruleValidID )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4278:3: lv_name_1_0= ruleValidID
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleValidID_in_ruleFullJvmFormalParameter10008);
            lv_name_1_0=ruleValidID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ValidID");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFullJvmFormalParameter"


    // $ANTLR start "entryRuleXFeatureCall"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4302:1: entryRuleXFeatureCall returns [EObject current=null] : iv_ruleXFeatureCall= ruleXFeatureCall EOF ;
    public final EObject entryRuleXFeatureCall() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXFeatureCall = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4303:2: (iv_ruleXFeatureCall= ruleXFeatureCall EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4304:2: iv_ruleXFeatureCall= ruleXFeatureCall EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXFeatureCallRule()); 
            }
            pushFollow(FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall10044);
            iv_ruleXFeatureCall=ruleXFeatureCall();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXFeatureCall; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXFeatureCall10054); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXFeatureCall"


    // $ANTLR start "ruleXFeatureCall"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4311:1: ruleXFeatureCall returns [EObject current=null] : ( () ( ( ruleStaticQualifier ) )? (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_14_0= ruleXClosure ) )? ) ;
    public final EObject ruleXFeatureCall() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token lv_explicitOperationCall_8_0=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        EObject lv_typeArguments_3_0 = null;

        EObject lv_typeArguments_5_0 = null;

        EObject lv_featureCallArguments_9_0 = null;

        EObject lv_featureCallArguments_10_0 = null;

        EObject lv_featureCallArguments_12_0 = null;

        EObject lv_featureCallArguments_14_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4314:28: ( ( () ( ( ruleStaticQualifier ) )? (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_14_0= ruleXClosure ) )? ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4315:1: ( () ( ( ruleStaticQualifier ) )? (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_14_0= ruleXClosure ) )? )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4315:1: ( () ( ( ruleStaticQualifier ) )? (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_14_0= ruleXClosure ) )? )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4315:2: () ( ( ruleStaticQualifier ) )? (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_14_0= ruleXClosure ) )?
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4315:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4316:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0(),
                          current);
                  
            }

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4321:2: ( ( ruleStaticQualifier ) )?
            int alt70=2;
            int LA70_0 = input.LA(1);

            if ( (LA70_0==RULE_ID) ) {
                int LA70_1 = input.LA(2);

                if ( (LA70_1==79) ) {
                    alt70=1;
                }
            }
            switch (alt70) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4322:1: ( ruleStaticQualifier )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4322:1: ( ruleStaticQualifier )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4323:3: ruleStaticQualifier
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXFeatureCallRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getDeclaringTypeJvmDeclaredTypeCrossReference_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleStaticQualifier_in_ruleXFeatureCall10111);
                    ruleStaticQualifier();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4336:3: (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )?
            int alt72=2;
            int LA72_0 = input.LA(1);

            if ( (LA72_0==44) ) {
                alt72=1;
            }
            switch (alt72) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4336:5: otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>'
                    {
                    otherlv_2=(Token)match(input,44,FOLLOW_44_in_ruleXFeatureCall10125); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_2_0());
                          
                    }
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4340:1: ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4341:1: (lv_typeArguments_3_0= ruleJvmArgumentTypeReference )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4341:1: (lv_typeArguments_3_0= ruleJvmArgumentTypeReference )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4342:3: lv_typeArguments_3_0= ruleJvmArgumentTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXFeatureCall10146);
                    lv_typeArguments_3_0=ruleJvmArgumentTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                      	        }
                             		add(
                             			current, 
                             			"typeArguments",
                              		lv_typeArguments_3_0, 
                              		"JvmArgumentTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4358:2: (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )*
                    loop71:
                    do {
                        int alt71=2;
                        int LA71_0 = input.LA(1);

                        if ( (LA71_0==29) ) {
                            alt71=1;
                        }


                        switch (alt71) {
                    	case 1 :
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4358:4: otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) )
                    	    {
                    	    otherlv_4=(Token)match(input,29,FOLLOW_29_in_ruleXFeatureCall10159); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_4, grammarAccess.getXFeatureCallAccess().getCommaKeyword_2_2_0());
                    	          
                    	    }
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4362:1: ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) )
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4363:1: (lv_typeArguments_5_0= ruleJvmArgumentTypeReference )
                    	    {
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4363:1: (lv_typeArguments_5_0= ruleJvmArgumentTypeReference )
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4364:3: lv_typeArguments_5_0= ruleJvmArgumentTypeReference
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_2_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXFeatureCall10180);
                    	    lv_typeArguments_5_0=ruleJvmArgumentTypeReference();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"typeArguments",
                    	              		lv_typeArguments_5_0, 
                    	              		"JvmArgumentTypeReference");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop71;
                        }
                    } while (true);

                    otherlv_6=(Token)match(input,43,FOLLOW_43_in_ruleXFeatureCall10194); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_2_3());
                          
                    }

                    }
                    break;

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4384:3: ( ( ruleIdOrSuper ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4385:1: ( ruleIdOrSuper )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4385:1: ( ruleIdOrSuper )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4386:3: ruleIdOrSuper
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getXFeatureCallRule());
              	        }
                      
            }
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleIdOrSuper_in_ruleXFeatureCall10219);
            ruleIdOrSuper();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4399:2: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?
            int alt75=2;
            alt75 = dfa75.predict(input);
            switch (alt75) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4399:3: ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')'
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4399:3: ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4399:4: ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4406:1: (lv_explicitOperationCall_8_0= '(' )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4407:3: lv_explicitOperationCall_8_0= '('
                    {
                    lv_explicitOperationCall_8_0=(Token)match(input,28,FOLLOW_28_in_ruleXFeatureCall10253); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_explicitOperationCall_8_0, grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_4_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXFeatureCallRule());
                      	        }
                             		setWithLastConsumed(current, "explicitOperationCall", true, "(");
                      	    
                    }

                    }


                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4420:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )?
                    int alt74=3;
                    alt74 = dfa74.predict(input);
                    switch (alt74) {
                        case 1 :
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4420:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4420:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4420:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4437:1: (lv_featureCallArguments_9_0= ruleXShortClosure )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4438:3: lv_featureCallArguments_9_0= ruleXShortClosure
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_4_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXShortClosure_in_ruleXFeatureCall10338);
                            lv_featureCallArguments_9_0=ruleXShortClosure();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"featureCallArguments",
                                      		lv_featureCallArguments_9_0, 
                                      		"XShortClosure");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4455:6: ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4455:6: ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4455:7: ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )*
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4455:7: ( (lv_featureCallArguments_10_0= ruleXExpression ) )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4456:1: (lv_featureCallArguments_10_0= ruleXExpression )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4456:1: (lv_featureCallArguments_10_0= ruleXExpression )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4457:3: lv_featureCallArguments_10_0= ruleXExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_4_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXExpression_in_ruleXFeatureCall10366);
                            lv_featureCallArguments_10_0=ruleXExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"featureCallArguments",
                                      		lv_featureCallArguments_10_0, 
                                      		"XExpression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4473:2: (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )*
                            loop73:
                            do {
                                int alt73=2;
                                int LA73_0 = input.LA(1);

                                if ( (LA73_0==29) ) {
                                    alt73=1;
                                }


                                switch (alt73) {
                            	case 1 :
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4473:4: otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) )
                            	    {
                            	    otherlv_11=(Token)match(input,29,FOLLOW_29_in_ruleXFeatureCall10379); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_11, grammarAccess.getXFeatureCallAccess().getCommaKeyword_4_1_1_1_0());
                            	          
                            	    }
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4477:1: ( (lv_featureCallArguments_12_0= ruleXExpression ) )
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4478:1: (lv_featureCallArguments_12_0= ruleXExpression )
                            	    {
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4478:1: (lv_featureCallArguments_12_0= ruleXExpression )
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4479:3: lv_featureCallArguments_12_0= ruleXExpression
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_4_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleXExpression_in_ruleXFeatureCall10400);
                            	    lv_featureCallArguments_12_0=ruleXExpression();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"featureCallArguments",
                            	              		lv_featureCallArguments_12_0, 
                            	              		"XExpression");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop73;
                                }
                            } while (true);


                            }


                            }
                            break;

                    }

                    otherlv_13=(Token)match(input,30,FOLLOW_30_in_ruleXFeatureCall10417); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_13, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_4_2());
                          
                    }

                    }
                    break;

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4499:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_14_0= ruleXClosure ) )?
            int alt76=2;
            alt76 = dfa76.predict(input);
            switch (alt76) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4499:4: ( ( () '[' ) )=> (lv_featureCallArguments_14_0= ruleXClosure )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4502:1: (lv_featureCallArguments_14_0= ruleXClosure )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4503:3: lv_featureCallArguments_14_0= ruleXClosure
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXClosureParserRuleCall_5_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXClosure_in_ruleXFeatureCall10452);
                    lv_featureCallArguments_14_0=ruleXClosure();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                      	        }
                             		add(
                             			current, 
                             			"featureCallArguments",
                              		lv_featureCallArguments_14_0, 
                              		"XClosure");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXFeatureCall"


    // $ANTLR start "entryRuleFeatureCallID"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4527:1: entryRuleFeatureCallID returns [String current=null] : iv_ruleFeatureCallID= ruleFeatureCallID EOF ;
    public final String entryRuleFeatureCallID() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleFeatureCallID = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4528:2: (iv_ruleFeatureCallID= ruleFeatureCallID EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4529:2: iv_ruleFeatureCallID= ruleFeatureCallID EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getFeatureCallIDRule()); 
            }
            pushFollow(FOLLOW_ruleFeatureCallID_in_entryRuleFeatureCallID10490);
            iv_ruleFeatureCallID=ruleFeatureCallID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleFeatureCallID.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleFeatureCallID10501); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFeatureCallID"


    // $ANTLR start "ruleFeatureCallID"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4536:1: ruleFeatureCallID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) ;
    public final AntlrDatatypeRuleToken ruleFeatureCallID() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_ValidID_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4539:28: ( (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4540:1: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4540:1: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
            int alt77=5;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                alt77=1;
                }
                break;
            case 74:
                {
                alt77=2;
                }
                break;
            case 75:
                {
                alt77=3;
                }
                break;
            case 76:
                {
                alt77=4;
                }
                break;
            case 77:
                {
                alt77=5;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 77, 0, input);

                throw nvae;
            }

            switch (alt77) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4541:5: this_ValidID_0= ruleValidID
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleValidID_in_ruleFeatureCallID10548);
                    this_ValidID_0=ruleValidID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      		current.merge(this_ValidID_0);
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4553:2: kw= 'extends'
                    {
                    kw=(Token)match(input,74,FOLLOW_74_in_ruleFeatureCallID10572); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4560:2: kw= 'static'
                    {
                    kw=(Token)match(input,75,FOLLOW_75_in_ruleFeatureCallID10591); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); 
                          
                    }

                    }
                    break;
                case 4 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4567:2: kw= 'import'
                    {
                    kw=(Token)match(input,76,FOLLOW_76_in_ruleFeatureCallID10610); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); 
                          
                    }

                    }
                    break;
                case 5 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4574:2: kw= 'extension'
                    {
                    kw=(Token)match(input,77,FOLLOW_77_in_ruleFeatureCallID10629); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFeatureCallID"


    // $ANTLR start "entryRuleIdOrSuper"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4587:1: entryRuleIdOrSuper returns [String current=null] : iv_ruleIdOrSuper= ruleIdOrSuper EOF ;
    public final String entryRuleIdOrSuper() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleIdOrSuper = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4588:2: (iv_ruleIdOrSuper= ruleIdOrSuper EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4589:2: iv_ruleIdOrSuper= ruleIdOrSuper EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIdOrSuperRule()); 
            }
            pushFollow(FOLLOW_ruleIdOrSuper_in_entryRuleIdOrSuper10670);
            iv_ruleIdOrSuper=ruleIdOrSuper();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIdOrSuper.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleIdOrSuper10681); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIdOrSuper"


    // $ANTLR start "ruleIdOrSuper"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4596:1: ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) ;
    public final AntlrDatatypeRuleToken ruleIdOrSuper() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_FeatureCallID_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4599:28: ( (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4600:1: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4600:1: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
            int alt78=2;
            int LA78_0 = input.LA(1);

            if ( (LA78_0==RULE_ID||(LA78_0>=74 && LA78_0<=77)) ) {
                alt78=1;
            }
            else if ( (LA78_0==78) ) {
                alt78=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 78, 0, input);

                throw nvae;
            }
            switch (alt78) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4601:5: this_FeatureCallID_0= ruleFeatureCallID
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleFeatureCallID_in_ruleIdOrSuper10728);
                    this_FeatureCallID_0=ruleFeatureCallID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      		current.merge(this_FeatureCallID_0);
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4613:2: kw= 'super'
                    {
                    kw=(Token)match(input,78,FOLLOW_78_in_ruleIdOrSuper10752); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIdOrSuper"


    // $ANTLR start "entryRuleStaticQualifier"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4626:1: entryRuleStaticQualifier returns [String current=null] : iv_ruleStaticQualifier= ruleStaticQualifier EOF ;
    public final String entryRuleStaticQualifier() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleStaticQualifier = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4627:2: (iv_ruleStaticQualifier= ruleStaticQualifier EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4628:2: iv_ruleStaticQualifier= ruleStaticQualifier EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getStaticQualifierRule()); 
            }
            pushFollow(FOLLOW_ruleStaticQualifier_in_entryRuleStaticQualifier10793);
            iv_ruleStaticQualifier=ruleStaticQualifier();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleStaticQualifier.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleStaticQualifier10804); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStaticQualifier"


    // $ANTLR start "ruleStaticQualifier"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4635:1: ruleStaticQualifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID kw= '::' )+ ;
    public final AntlrDatatypeRuleToken ruleStaticQualifier() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_ValidID_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4638:28: ( (this_ValidID_0= ruleValidID kw= '::' )+ )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4639:1: (this_ValidID_0= ruleValidID kw= '::' )+
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4639:1: (this_ValidID_0= ruleValidID kw= '::' )+
            int cnt79=0;
            loop79:
            do {
                int alt79=2;
                int LA79_0 = input.LA(1);

                if ( (LA79_0==RULE_ID) ) {
                    int LA79_2 = input.LA(2);

                    if ( (LA79_2==79) ) {
                        alt79=1;
                    }


                }


                switch (alt79) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4640:5: this_ValidID_0= ruleValidID kw= '::'
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	              newCompositeNode(grammarAccess.getStaticQualifierAccess().getValidIDParserRuleCall_0()); 
            	          
            	    }
            	    pushFollow(FOLLOW_ruleValidID_in_ruleStaticQualifier10851);
            	    this_ValidID_0=ruleValidID();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      		current.merge(this_ValidID_0);
            	          
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	              afterParserOrEnumRuleCall();
            	          
            	    }
            	    kw=(Token)match(input,79,FOLLOW_79_in_ruleStaticQualifier10869); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              current.merge(kw);
            	              newLeafNode(kw, grammarAccess.getStaticQualifierAccess().getColonColonKeyword_1()); 
            	          
            	    }

            	    }
            	    break;

            	default :
            	    if ( cnt79 >= 1 ) break loop79;
            	    if (state.backtracking>0) {state.failed=true; return current;}
                        EarlyExitException eee =
                            new EarlyExitException(79, input);
                        throw eee;
                }
                cnt79++;
            } while (true);


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStaticQualifier"


    // $ANTLR start "entryRuleXConstructorCall"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4664:1: entryRuleXConstructorCall returns [EObject current=null] : iv_ruleXConstructorCall= ruleXConstructorCall EOF ;
    public final EObject entryRuleXConstructorCall() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXConstructorCall = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4665:2: (iv_ruleXConstructorCall= ruleXConstructorCall EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4666:2: iv_ruleXConstructorCall= ruleXConstructorCall EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXConstructorCallRule()); 
            }
            pushFollow(FOLLOW_ruleXConstructorCall_in_entryRuleXConstructorCall10910);
            iv_ruleXConstructorCall=ruleXConstructorCall();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXConstructorCall; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXConstructorCall10920); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXConstructorCall"


    // $ANTLR start "ruleXConstructorCall"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4673:1: ruleXConstructorCall returns [EObject current=null] : ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( '(' )=>otherlv_8= '(' ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) ;
    public final EObject ruleXConstructorCall() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        EObject lv_typeArguments_4_0 = null;

        EObject lv_typeArguments_6_0 = null;

        EObject lv_arguments_9_0 = null;

        EObject lv_arguments_10_0 = null;

        EObject lv_arguments_12_0 = null;

        EObject lv_arguments_14_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4676:28: ( ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( '(' )=>otherlv_8= '(' ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4677:1: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( '(' )=>otherlv_8= '(' ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4677:1: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( '(' )=>otherlv_8= '(' ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4677:2: () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( '(' )=>otherlv_8= '(' ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4677:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4678:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,80,FOLLOW_80_in_ruleXConstructorCall10966); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXConstructorCallAccess().getNewKeyword_1());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4687:1: ( ( ruleQualifiedName ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4688:1: ( ruleQualifiedName )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4688:1: ( ruleQualifiedName )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4689:3: ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getXConstructorCallRule());
              	        }
                      
            }
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleXConstructorCall10989);
            ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4702:2: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?
            int alt81=2;
            alt81 = dfa81.predict(input);
            switch (alt81) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4702:3: ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>'
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4702:3: ( ( '<' )=>otherlv_3= '<' )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4702:4: ( '<' )=>otherlv_3= '<'
                    {
                    otherlv_3=(Token)match(input,44,FOLLOW_44_in_ruleXConstructorCall11010); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0());
                          
                    }

                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4707:2: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4708:1: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4708:1: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4709:3: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXConstructorCall11032);
                    lv_typeArguments_4_0=ruleJvmArgumentTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                      	        }
                             		add(
                             			current, 
                             			"typeArguments",
                              		lv_typeArguments_4_0, 
                              		"JvmArgumentTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4725:2: (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )*
                    loop80:
                    do {
                        int alt80=2;
                        int LA80_0 = input.LA(1);

                        if ( (LA80_0==29) ) {
                            alt80=1;
                        }


                        switch (alt80) {
                    	case 1 :
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4725:4: otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
                    	    {
                    	    otherlv_5=(Token)match(input,29,FOLLOW_29_in_ruleXConstructorCall11045); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_5, grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0());
                    	          
                    	    }
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4729:1: ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4730:1: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
                    	    {
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4730:1: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4731:3: lv_typeArguments_6_0= ruleJvmArgumentTypeReference
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXConstructorCall11066);
                    	    lv_typeArguments_6_0=ruleJvmArgumentTypeReference();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"typeArguments",
                    	              		lv_typeArguments_6_0, 
                    	              		"JvmArgumentTypeReference");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop80;
                        }
                    } while (true);

                    otherlv_7=(Token)match(input,43,FOLLOW_43_in_ruleXConstructorCall11080); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3());
                          
                    }

                    }
                    break;

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4751:3: ( ( ( '(' )=>otherlv_8= '(' ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?
            int alt84=2;
            alt84 = dfa84.predict(input);
            switch (alt84) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4751:4: ( ( '(' )=>otherlv_8= '(' ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')'
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4751:4: ( ( '(' )=>otherlv_8= '(' )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4751:5: ( '(' )=>otherlv_8= '('
                    {
                    otherlv_8=(Token)match(input,28,FOLLOW_28_in_ruleXConstructorCall11103); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getXConstructorCallAccess().getLeftParenthesisKeyword_4_0());
                          
                    }

                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4756:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?
                    int alt83=3;
                    alt83 = dfa83.predict(input);
                    switch (alt83) {
                        case 1 :
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4756:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4756:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4756:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4773:1: (lv_arguments_9_0= ruleXShortClosure )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4774:3: lv_arguments_9_0= ruleXShortClosure
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXShortClosure_in_ruleXConstructorCall11176);
                            lv_arguments_9_0=ruleXShortClosure();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"arguments",
                                      		lv_arguments_9_0, 
                                      		"XShortClosure");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4791:6: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4791:6: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4791:7: ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4791:7: ( (lv_arguments_10_0= ruleXExpression ) )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4792:1: (lv_arguments_10_0= ruleXExpression )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4792:1: (lv_arguments_10_0= ruleXExpression )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4793:3: lv_arguments_10_0= ruleXExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXExpression_in_ruleXConstructorCall11204);
                            lv_arguments_10_0=ruleXExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"arguments",
                                      		lv_arguments_10_0, 
                                      		"XExpression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4809:2: (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
                            loop82:
                            do {
                                int alt82=2;
                                int LA82_0 = input.LA(1);

                                if ( (LA82_0==29) ) {
                                    alt82=1;
                                }


                                switch (alt82) {
                            	case 1 :
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4809:4: otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) )
                            	    {
                            	    otherlv_11=(Token)match(input,29,FOLLOW_29_in_ruleXConstructorCall11217); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_11, grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0());
                            	          
                            	    }
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4813:1: ( (lv_arguments_12_0= ruleXExpression ) )
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4814:1: (lv_arguments_12_0= ruleXExpression )
                            	    {
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4814:1: (lv_arguments_12_0= ruleXExpression )
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4815:3: lv_arguments_12_0= ruleXExpression
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleXExpression_in_ruleXConstructorCall11238);
                            	    lv_arguments_12_0=ruleXExpression();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"arguments",
                            	              		lv_arguments_12_0, 
                            	              		"XExpression");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop82;
                                }
                            } while (true);


                            }


                            }
                            break;

                    }

                    otherlv_13=(Token)match(input,30,FOLLOW_30_in_ruleXConstructorCall11255); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_13, grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2());
                          
                    }

                    }
                    break;

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4835:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
            int alt85=2;
            alt85 = dfa85.predict(input);
            switch (alt85) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4835:4: ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4838:1: (lv_arguments_14_0= ruleXClosure )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4839:3: lv_arguments_14_0= ruleXClosure
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXClosureParserRuleCall_5_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXClosure_in_ruleXConstructorCall11290);
                    lv_arguments_14_0=ruleXClosure();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                      	        }
                             		add(
                             			current, 
                             			"arguments",
                              		lv_arguments_14_0, 
                              		"XClosure");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXConstructorCall"


    // $ANTLR start "entryRuleXBooleanLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4863:1: entryRuleXBooleanLiteral returns [EObject current=null] : iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF ;
    public final EObject entryRuleXBooleanLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXBooleanLiteral = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4864:2: (iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4865:2: iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXBooleanLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXBooleanLiteral_in_entryRuleXBooleanLiteral11327);
            iv_ruleXBooleanLiteral=ruleXBooleanLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXBooleanLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXBooleanLiteral11337); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXBooleanLiteral"


    // $ANTLR start "ruleXBooleanLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4872:1: ruleXBooleanLiteral returns [EObject current=null] : ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) ;
    public final EObject ruleXBooleanLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_isTrue_2_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4875:28: ( ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4876:1: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4876:1: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4876:2: () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4876:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4877:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0(),
                          current);
                  
            }

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4882:2: (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
            int alt86=2;
            int LA86_0 = input.LA(1);

            if ( (LA86_0==81) ) {
                alt86=1;
            }
            else if ( (LA86_0==82) ) {
                alt86=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 86, 0, input);

                throw nvae;
            }
            switch (alt86) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4882:4: otherlv_1= 'false'
                    {
                    otherlv_1=(Token)match(input,81,FOLLOW_81_in_ruleXBooleanLiteral11384); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0());
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4887:6: ( (lv_isTrue_2_0= 'true' ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4887:6: ( (lv_isTrue_2_0= 'true' ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4888:1: (lv_isTrue_2_0= 'true' )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4888:1: (lv_isTrue_2_0= 'true' )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4889:3: lv_isTrue_2_0= 'true'
                    {
                    lv_isTrue_2_0=(Token)match(input,82,FOLLOW_82_in_ruleXBooleanLiteral11408); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isTrue_2_0, grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXBooleanLiteralRule());
                      	        }
                             		setWithLastConsumed(current, "isTrue", true, "true");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXBooleanLiteral"


    // $ANTLR start "entryRuleXNullLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4910:1: entryRuleXNullLiteral returns [EObject current=null] : iv_ruleXNullLiteral= ruleXNullLiteral EOF ;
    public final EObject entryRuleXNullLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXNullLiteral = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4911:2: (iv_ruleXNullLiteral= ruleXNullLiteral EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4912:2: iv_ruleXNullLiteral= ruleXNullLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXNullLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral11458);
            iv_ruleXNullLiteral=ruleXNullLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXNullLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXNullLiteral11468); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXNullLiteral"


    // $ANTLR start "ruleXNullLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4919:1: ruleXNullLiteral returns [EObject current=null] : ( () otherlv_1= 'null' ) ;
    public final EObject ruleXNullLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4922:28: ( ( () otherlv_1= 'null' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4923:1: ( () otherlv_1= 'null' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4923:1: ( () otherlv_1= 'null' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4923:2: () otherlv_1= 'null'
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4923:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4924:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,83,FOLLOW_83_in_ruleXNullLiteral11514); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXNullLiteralAccess().getNullKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXNullLiteral"


    // $ANTLR start "entryRuleXNumberLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4941:1: entryRuleXNumberLiteral returns [EObject current=null] : iv_ruleXNumberLiteral= ruleXNumberLiteral EOF ;
    public final EObject entryRuleXNumberLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXNumberLiteral = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4942:2: (iv_ruleXNumberLiteral= ruleXNumberLiteral EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4943:2: iv_ruleXNumberLiteral= ruleXNumberLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXNumberLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXNumberLiteral_in_entryRuleXNumberLiteral11550);
            iv_ruleXNumberLiteral=ruleXNumberLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXNumberLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXNumberLiteral11560); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXNumberLiteral"


    // $ANTLR start "ruleXNumberLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4950:1: ruleXNumberLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= ruleNumber ) ) ) ;
    public final EObject ruleXNumberLiteral() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_value_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4953:28: ( ( () ( (lv_value_1_0= ruleNumber ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4954:1: ( () ( (lv_value_1_0= ruleNumber ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4954:1: ( () ( (lv_value_1_0= ruleNumber ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4954:2: () ( (lv_value_1_0= ruleNumber ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4954:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4955:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0(),
                          current);
                  
            }

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4960:2: ( (lv_value_1_0= ruleNumber ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4961:1: (lv_value_1_0= ruleNumber )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4961:1: (lv_value_1_0= ruleNumber )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4962:3: lv_value_1_0= ruleNumber
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleNumber_in_ruleXNumberLiteral11615);
            lv_value_1_0=ruleNumber();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXNumberLiteralRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_1_0, 
                      		"Number");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXNumberLiteral"


    // $ANTLR start "entryRuleXStringLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4986:1: entryRuleXStringLiteral returns [EObject current=null] : iv_ruleXStringLiteral= ruleXStringLiteral EOF ;
    public final EObject entryRuleXStringLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXStringLiteral = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4987:2: (iv_ruleXStringLiteral= ruleXStringLiteral EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4988:2: iv_ruleXStringLiteral= ruleXStringLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXStringLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral11651);
            iv_ruleXStringLiteral=ruleXStringLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXStringLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXStringLiteral11661); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXStringLiteral"


    // $ANTLR start "ruleXStringLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4995:1: ruleXStringLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= RULE_STRING ) ) ) ;
    public final EObject ruleXStringLiteral() throws RecognitionException {
        EObject current = null;

        Token lv_value_1_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4998:28: ( ( () ( (lv_value_1_0= RULE_STRING ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4999:1: ( () ( (lv_value_1_0= RULE_STRING ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4999:1: ( () ( (lv_value_1_0= RULE_STRING ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4999:2: () ( (lv_value_1_0= RULE_STRING ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4999:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5000:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0(),
                          current);
                  
            }

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5005:2: ( (lv_value_1_0= RULE_STRING ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5006:1: (lv_value_1_0= RULE_STRING )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5006:1: (lv_value_1_0= RULE_STRING )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5007:3: lv_value_1_0= RULE_STRING
            {
            lv_value_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleXStringLiteral11712); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_value_1_0, grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getXStringLiteralRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"value",
                      		lv_value_1_0, 
                      		"STRING");
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXStringLiteral"


    // $ANTLR start "entryRuleXTypeLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5031:1: entryRuleXTypeLiteral returns [EObject current=null] : iv_ruleXTypeLiteral= ruleXTypeLiteral EOF ;
    public final EObject entryRuleXTypeLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXTypeLiteral = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5032:2: (iv_ruleXTypeLiteral= ruleXTypeLiteral EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5033:2: iv_ruleXTypeLiteral= ruleXTypeLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXTypeLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXTypeLiteral_in_entryRuleXTypeLiteral11753);
            iv_ruleXTypeLiteral=ruleXTypeLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXTypeLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXTypeLiteral11763); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXTypeLiteral"


    // $ANTLR start "ruleXTypeLiteral"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5040:1: ruleXTypeLiteral returns [EObject current=null] : ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) ;
    public final EObject ruleXTypeLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_5=null;
        AntlrDatatypeRuleToken lv_arrayDimensions_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5043:28: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5044:1: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5044:1: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5044:2: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')'
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5044:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5045:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,84,FOLLOW_84_in_ruleXTypeLiteral11809); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,28,FOLLOW_28_in_ruleXTypeLiteral11821); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5058:1: ( ( ruleQualifiedName ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5059:1: ( ruleQualifiedName )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5059:1: ( ruleQualifiedName )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5060:3: ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getXTypeLiteralRule());
              	        }
                      
            }
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleXTypeLiteral11844);
            ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5073:2: ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )*
            loop87:
            do {
                int alt87=2;
                int LA87_0 = input.LA(1);

                if ( (LA87_0==62) ) {
                    alt87=1;
                }


                switch (alt87) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5074:1: (lv_arrayDimensions_4_0= ruleArrayBrackets )
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5074:1: (lv_arrayDimensions_4_0= ruleArrayBrackets )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5075:3: lv_arrayDimensions_4_0= ruleArrayBrackets
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleArrayBrackets_in_ruleXTypeLiteral11865);
            	    lv_arrayDimensions_4_0=ruleArrayBrackets();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXTypeLiteralRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"arrayDimensions",
            	              		lv_arrayDimensions_4_0, 
            	              		"ArrayBrackets");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop87;
                }
            } while (true);

            otherlv_5=(Token)match(input,30,FOLLOW_30_in_ruleXTypeLiteral11878); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXTypeLiteral"


    // $ANTLR start "entryRuleXThrowExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5103:1: entryRuleXThrowExpression returns [EObject current=null] : iv_ruleXThrowExpression= ruleXThrowExpression EOF ;
    public final EObject entryRuleXThrowExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXThrowExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5104:2: (iv_ruleXThrowExpression= ruleXThrowExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5105:2: iv_ruleXThrowExpression= ruleXThrowExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXThrowExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXThrowExpression_in_entryRuleXThrowExpression11914);
            iv_ruleXThrowExpression=ruleXThrowExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXThrowExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXThrowExpression11924); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXThrowExpression"


    // $ANTLR start "ruleXThrowExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5112:1: ruleXThrowExpression returns [EObject current=null] : ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) ;
    public final EObject ruleXThrowExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_expression_2_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5115:28: ( ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5116:1: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5116:1: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5116:2: () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5116:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5117:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,85,FOLLOW_85_in_ruleXThrowExpression11970); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5126:1: ( (lv_expression_2_0= ruleXExpression ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5127:1: (lv_expression_2_0= ruleXExpression )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5127:1: (lv_expression_2_0= ruleXExpression )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5128:3: lv_expression_2_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXThrowExpression11991);
            lv_expression_2_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXThrowExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_2_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXThrowExpression"


    // $ANTLR start "entryRuleXReturnExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5152:1: entryRuleXReturnExpression returns [EObject current=null] : iv_ruleXReturnExpression= ruleXReturnExpression EOF ;
    public final EObject entryRuleXReturnExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXReturnExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5153:2: (iv_ruleXReturnExpression= ruleXReturnExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5154:2: iv_ruleXReturnExpression= ruleXReturnExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXReturnExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXReturnExpression_in_entryRuleXReturnExpression12027);
            iv_ruleXReturnExpression=ruleXReturnExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXReturnExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXReturnExpression12037); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXReturnExpression"


    // $ANTLR start "ruleXReturnExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5161:1: ruleXReturnExpression returns [EObject current=null] : ( () otherlv_1= 'return' ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )? ) ;
    public final EObject ruleXReturnExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_expression_2_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5164:28: ( ( () otherlv_1= 'return' ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )? ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5165:1: ( () otherlv_1= 'return' ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )? )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5165:1: ( () otherlv_1= 'return' ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )? )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5165:2: () otherlv_1= 'return' ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )?
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5165:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5166:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,86,FOLLOW_86_in_ruleXReturnExpression12083); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5175:1: ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )?
            int alt88=2;
            alt88 = dfa88.predict(input);
            switch (alt88) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5175:2: ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5180:1: (lv_expression_2_0= ruleXExpression )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5181:3: lv_expression_2_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXReturnExpression12114);
                    lv_expression_2_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXReturnExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"expression",
                              		lv_expression_2_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXReturnExpression"


    // $ANTLR start "entryRuleXTryCatchFinallyExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5205:1: entryRuleXTryCatchFinallyExpression returns [EObject current=null] : iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF ;
    public final EObject entryRuleXTryCatchFinallyExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXTryCatchFinallyExpression = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5206:2: (iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5207:2: iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXTryCatchFinallyExpression_in_entryRuleXTryCatchFinallyExpression12151);
            iv_ruleXTryCatchFinallyExpression=ruleXTryCatchFinallyExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXTryCatchFinallyExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXTryCatchFinallyExpression12161); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXTryCatchFinallyExpression"


    // $ANTLR start "ruleXTryCatchFinallyExpression"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5214:1: ruleXTryCatchFinallyExpression returns [EObject current=null] : ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) ;
    public final EObject ruleXTryCatchFinallyExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_expression_2_0 = null;

        EObject lv_catchClauses_3_0 = null;

        EObject lv_finallyExpression_5_0 = null;

        EObject lv_finallyExpression_7_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5217:28: ( ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5218:1: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5218:1: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5218:2: () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5218:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5219:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,87,FOLLOW_87_in_ruleXTryCatchFinallyExpression12207); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5228:1: ( (lv_expression_2_0= ruleXExpression ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5229:1: (lv_expression_2_0= ruleXExpression )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5229:1: (lv_expression_2_0= ruleXExpression )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5230:3: lv_expression_2_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression12228);
            lv_expression_2_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_2_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5246:2: ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
            int alt91=2;
            int LA91_0 = input.LA(1);

            if ( (LA91_0==89) ) {
                alt91=1;
            }
            else if ( (LA91_0==88) ) {
                alt91=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 91, 0, input);

                throw nvae;
            }
            switch (alt91) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5246:3: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5246:3: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5246:4: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5246:4: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+
                    int cnt89=0;
                    loop89:
                    do {
                        int alt89=2;
                        int LA89_0 = input.LA(1);

                        if ( (LA89_0==89) ) {
                            int LA89_2 = input.LA(2);

                            if ( (synpred34_InternalMyDsl()) ) {
                                alt89=1;
                            }


                        }


                        switch (alt89) {
                    	case 1 :
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5246:5: ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause )
                    	    {
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5248:1: (lv_catchClauses_3_0= ruleXCatchClause )
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5249:3: lv_catchClauses_3_0= ruleXCatchClause
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleXCatchClause_in_ruleXTryCatchFinallyExpression12258);
                    	    lv_catchClauses_3_0=ruleXCatchClause();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"catchClauses",
                    	              		lv_catchClauses_3_0, 
                    	              		"XCatchClause");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt89 >= 1 ) break loop89;
                    	    if (state.backtracking>0) {state.failed=true; return current;}
                                EarlyExitException eee =
                                    new EarlyExitException(89, input);
                                throw eee;
                        }
                        cnt89++;
                    } while (true);

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5265:3: ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
                    int alt90=2;
                    int LA90_0 = input.LA(1);

                    if ( (LA90_0==88) ) {
                        int LA90_1 = input.LA(2);

                        if ( (synpred35_InternalMyDsl()) ) {
                            alt90=1;
                        }
                    }
                    switch (alt90) {
                        case 1 :
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5265:4: ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5265:4: ( ( 'finally' )=>otherlv_4= 'finally' )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5265:5: ( 'finally' )=>otherlv_4= 'finally'
                            {
                            otherlv_4=(Token)match(input,88,FOLLOW_88_in_ruleXTryCatchFinallyExpression12280); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
                                  
                            }

                            }

                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5270:2: ( (lv_finallyExpression_5_0= ruleXExpression ) )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5271:1: (lv_finallyExpression_5_0= ruleXExpression )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5271:1: (lv_finallyExpression_5_0= ruleXExpression )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5272:3: lv_finallyExpression_5_0= ruleXExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression12302);
                            lv_finallyExpression_5_0=ruleXExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"finallyExpression",
                                      		lv_finallyExpression_5_0, 
                                      		"XExpression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5289:6: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5289:6: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5289:8: otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) )
                    {
                    otherlv_6=(Token)match(input,88,FOLLOW_88_in_ruleXTryCatchFinallyExpression12324); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
                          
                    }
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5293:1: ( (lv_finallyExpression_7_0= ruleXExpression ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5294:1: (lv_finallyExpression_7_0= ruleXExpression )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5294:1: (lv_finallyExpression_7_0= ruleXExpression )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5295:3: lv_finallyExpression_7_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression12345);
                    lv_finallyExpression_7_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"finallyExpression",
                              		lv_finallyExpression_7_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXTryCatchFinallyExpression"


    // $ANTLR start "entryRuleXCatchClause"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5319:1: entryRuleXCatchClause returns [EObject current=null] : iv_ruleXCatchClause= ruleXCatchClause EOF ;
    public final EObject entryRuleXCatchClause() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXCatchClause = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5320:2: (iv_ruleXCatchClause= ruleXCatchClause EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5321:2: iv_ruleXCatchClause= ruleXCatchClause EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXCatchClauseRule()); 
            }
            pushFollow(FOLLOW_ruleXCatchClause_in_entryRuleXCatchClause12383);
            iv_ruleXCatchClause=ruleXCatchClause();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXCatchClause; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXCatchClause12393); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXCatchClause"


    // $ANTLR start "ruleXCatchClause"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5328:1: ruleXCatchClause returns [EObject current=null] : ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) ;
    public final EObject ruleXCatchClause() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_declaredParam_2_0 = null;

        EObject lv_expression_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5331:28: ( ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5332:1: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5332:1: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5332:2: ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5332:2: ( ( 'catch' )=>otherlv_0= 'catch' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5332:3: ( 'catch' )=>otherlv_0= 'catch'
            {
            otherlv_0=(Token)match(input,89,FOLLOW_89_in_ruleXCatchClause12438); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
                  
            }

            }

            otherlv_1=(Token)match(input,28,FOLLOW_28_in_ruleXCatchClause12451); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5341:1: ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5342:1: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5342:1: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5343:3: lv_declaredParam_2_0= ruleFullJvmFormalParameter
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleFullJvmFormalParameter_in_ruleXCatchClause12472);
            lv_declaredParam_2_0=ruleFullJvmFormalParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
              	        }
                     		set(
                     			current, 
                     			"declaredParam",
                      		lv_declaredParam_2_0, 
                      		"FullJvmFormalParameter");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,30,FOLLOW_30_in_ruleXCatchClause12484); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5363:1: ( (lv_expression_4_0= ruleXExpression ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5364:1: (lv_expression_4_0= ruleXExpression )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5364:1: (lv_expression_4_0= ruleXExpression )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5365:3: lv_expression_4_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXCatchClause12505);
            lv_expression_4_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_4_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXCatchClause"


    // $ANTLR start "entryRuleQualifiedName"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5389:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final String entryRuleQualifiedName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5390:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5391:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getQualifiedNameRule()); 
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName12542);
            iv_ruleQualifiedName=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleQualifiedName.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName12553); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedName"


    // $ANTLR start "ruleQualifiedName"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5398:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_ValidID_0 = null;

        AntlrDatatypeRuleToken this_ValidID_2 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5401:28: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5402:1: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5402:1: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5403:5: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleValidID_in_ruleQualifiedName12600);
            this_ValidID_0=ruleValidID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(this_ValidID_0);
                  
            }
            if ( state.backtracking==0 ) {
               
                      afterParserOrEnumRuleCall();
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5413:1: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
            loop92:
            do {
                int alt92=2;
                int LA92_0 = input.LA(1);

                if ( (LA92_0==17) ) {
                    int LA92_2 = input.LA(2);

                    if ( (LA92_2==RULE_ID) ) {
                        int LA92_3 = input.LA(3);

                        if ( (synpred37_InternalMyDsl()) ) {
                            alt92=1;
                        }


                    }


                }


                switch (alt92) {
            	case 1 :
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5413:2: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
            	    {
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5413:2: ( ( '.' )=>kw= '.' )
            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5413:3: ( '.' )=>kw= '.'
            	    {
            	    kw=(Token)match(input,17,FOLLOW_17_in_ruleQualifiedName12628); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              current.merge(kw);
            	              newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
            	          
            	    }

            	    }

            	    if ( state.backtracking==0 ) {
            	       
            	              newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); 
            	          
            	    }
            	    pushFollow(FOLLOW_ruleValidID_in_ruleQualifiedName12651);
            	    this_ValidID_2=ruleValidID();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      		current.merge(this_ValidID_2);
            	          
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	              afterParserOrEnumRuleCall();
            	          
            	    }

            	    }
            	    break;

            	default :
            	    break loop92;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedName"


    // $ANTLR start "entryRuleNumber"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5440:1: entryRuleNumber returns [String current=null] : iv_ruleNumber= ruleNumber EOF ;
    public final String entryRuleNumber() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleNumber = null;


         
        		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
        	
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5444:2: (iv_ruleNumber= ruleNumber EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5445:2: iv_ruleNumber= ruleNumber EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNumberRule()); 
            }
            pushFollow(FOLLOW_ruleNumber_in_entryRuleNumber12705);
            iv_ruleNumber=ruleNumber();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNumber.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleNumber12716); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {

            	myHiddenTokenState.restore();

        }
        return current;
    }
    // $ANTLR end "entryRuleNumber"


    // $ANTLR start "ruleNumber"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5455:1: ruleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) ) ;
    public final AntlrDatatypeRuleToken ruleNumber() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_HEX_0=null;
        Token this_INT_1=null;
        Token this_DECIMAL_2=null;
        Token kw=null;
        Token this_INT_4=null;
        Token this_DECIMAL_5=null;

         enterRule(); 
        		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5459:28: ( (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5460:1: (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5460:1: (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) )
            int alt96=2;
            int LA96_0 = input.LA(1);

            if ( (LA96_0==RULE_HEX) ) {
                alt96=1;
            }
            else if ( ((LA96_0>=RULE_INT && LA96_0<=RULE_DECIMAL)) ) {
                alt96=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 96, 0, input);

                throw nvae;
            }
            switch (alt96) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5460:6: this_HEX_0= RULE_HEX
                    {
                    this_HEX_0=(Token)match(input,RULE_HEX,FOLLOW_RULE_HEX_in_ruleNumber12760); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      		current.merge(this_HEX_0);
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                          newLeafNode(this_HEX_0, grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5468:6: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5468:6: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5468:7: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5468:7: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL )
                    int alt93=2;
                    int LA93_0 = input.LA(1);

                    if ( (LA93_0==RULE_INT) ) {
                        alt93=1;
                    }
                    else if ( (LA93_0==RULE_DECIMAL) ) {
                        alt93=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 93, 0, input);

                        throw nvae;
                    }
                    switch (alt93) {
                        case 1 :
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5468:12: this_INT_1= RULE_INT
                            {
                            this_INT_1=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleNumber12788); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              		current.merge(this_INT_1);
                                  
                            }
                            if ( state.backtracking==0 ) {
                               
                                  newLeafNode(this_INT_1, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); 
                                  
                            }

                            }
                            break;
                        case 2 :
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5476:10: this_DECIMAL_2= RULE_DECIMAL
                            {
                            this_DECIMAL_2=(Token)match(input,RULE_DECIMAL,FOLLOW_RULE_DECIMAL_in_ruleNumber12814); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              		current.merge(this_DECIMAL_2);
                                  
                            }
                            if ( state.backtracking==0 ) {
                               
                                  newLeafNode(this_DECIMAL_2, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); 
                                  
                            }

                            }
                            break;

                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5483:2: (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
                    int alt95=2;
                    int LA95_0 = input.LA(1);

                    if ( (LA95_0==17) ) {
                        int LA95_1 = input.LA(2);

                        if ( ((LA95_1>=RULE_INT && LA95_1<=RULE_DECIMAL)) ) {
                            alt95=1;
                        }
                    }
                    switch (alt95) {
                        case 1 :
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5484:2: kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
                            {
                            kw=(Token)match(input,17,FOLLOW_17_in_ruleNumber12834); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      current.merge(kw);
                                      newLeafNode(kw, grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0()); 
                                  
                            }
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5489:1: (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
                            int alt94=2;
                            int LA94_0 = input.LA(1);

                            if ( (LA94_0==RULE_INT) ) {
                                alt94=1;
                            }
                            else if ( (LA94_0==RULE_DECIMAL) ) {
                                alt94=2;
                            }
                            else {
                                if (state.backtracking>0) {state.failed=true; return current;}
                                NoViableAltException nvae =
                                    new NoViableAltException("", 94, 0, input);

                                throw nvae;
                            }
                            switch (alt94) {
                                case 1 :
                                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5489:6: this_INT_4= RULE_INT
                                    {
                                    this_INT_4=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleNumber12850); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                      		current.merge(this_INT_4);
                                          
                                    }
                                    if ( state.backtracking==0 ) {
                                       
                                          newLeafNode(this_INT_4, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); 
                                          
                                    }

                                    }
                                    break;
                                case 2 :
                                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5497:10: this_DECIMAL_5= RULE_DECIMAL
                                    {
                                    this_DECIMAL_5=(Token)match(input,RULE_DECIMAL,FOLLOW_RULE_DECIMAL_in_ruleNumber12876); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                      		current.merge(this_DECIMAL_5);
                                          
                                    }
                                    if ( state.backtracking==0 ) {
                                       
                                          newLeafNode(this_DECIMAL_5, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); 
                                          
                                    }

                                    }
                                    break;

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {

            	myHiddenTokenState.restore();

        }
        return current;
    }
    // $ANTLR end "ruleNumber"


    // $ANTLR start "entryRuleJvmTypeReference"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5515:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
    public final EObject entryRuleJvmTypeReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmTypeReference = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5516:2: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5517:2: iv_ruleJvmTypeReference= ruleJvmTypeReference EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmTypeReferenceRule()); 
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_entryRuleJvmTypeReference12929);
            iv_ruleJvmTypeReference=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmTypeReference; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmTypeReference12939); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmTypeReference"


    // $ANTLR start "ruleJvmTypeReference"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5524:1: ruleJvmTypeReference returns [EObject current=null] : ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) ;
    public final EObject ruleJvmTypeReference() throws RecognitionException {
        EObject current = null;

        EObject this_JvmParameterizedTypeReference_0 = null;

        EObject this_XFunctionTypeRef_3 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5527:28: ( ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5528:1: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5528:1: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
            int alt98=2;
            int LA98_0 = input.LA(1);

            if ( (LA98_0==RULE_ID) ) {
                alt98=1;
            }
            else if ( (LA98_0==28||LA98_0==48) ) {
                alt98=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 98, 0, input);

                throw nvae;
            }
            switch (alt98) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5528:2: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5528:2: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5529:5: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleJvmParameterizedTypeReference_in_ruleJvmTypeReference12987);
                    this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_JvmParameterizedTypeReference_0; 
                              afterParserOrEnumRuleCall();
                          
                    }
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5537:1: ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
                    loop97:
                    do {
                        int alt97=2;
                        int LA97_0 = input.LA(1);

                        if ( (LA97_0==62) ) {
                            int LA97_2 = input.LA(2);

                            if ( (LA97_2==63) ) {
                                int LA97_3 = input.LA(3);

                                if ( (synpred38_InternalMyDsl()) ) {
                                    alt97=1;
                                }


                            }


                        }


                        switch (alt97) {
                    	case 1 :
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5537:2: ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets )
                    	    {
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5538:24: ( () ruleArrayBrackets )
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5538:25: () ruleArrayBrackets
                    	    {
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5538:25: ()
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5539:5: 
                    	    {
                    	    if ( state.backtracking==0 ) {

                    	              current = forceCreateModelElementAndSet(
                    	                  grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0(),
                    	                  current);
                    	          
                    	    }

                    	    }

                    	    if ( state.backtracking==0 ) {
                    	       
                    	              newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1()); 
                    	          
                    	    }
                    	    pushFollow(FOLLOW_ruleArrayBrackets_in_ruleJvmTypeReference13023);
                    	    ruleArrayBrackets();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {
                    	       
                    	              afterParserOrEnumRuleCall();
                    	          
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop97;
                        }
                    } while (true);


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5554:5: this_XFunctionTypeRef_3= ruleXFunctionTypeRef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXFunctionTypeRef_in_ruleJvmTypeReference13054);
                    this_XFunctionTypeRef_3=ruleXFunctionTypeRef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XFunctionTypeRef_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmTypeReference"


    // $ANTLR start "entryRuleArrayBrackets"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5570:1: entryRuleArrayBrackets returns [String current=null] : iv_ruleArrayBrackets= ruleArrayBrackets EOF ;
    public final String entryRuleArrayBrackets() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleArrayBrackets = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5571:2: (iv_ruleArrayBrackets= ruleArrayBrackets EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5572:2: iv_ruleArrayBrackets= ruleArrayBrackets EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getArrayBracketsRule()); 
            }
            pushFollow(FOLLOW_ruleArrayBrackets_in_entryRuleArrayBrackets13090);
            iv_ruleArrayBrackets=ruleArrayBrackets();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleArrayBrackets.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleArrayBrackets13101); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleArrayBrackets"


    // $ANTLR start "ruleArrayBrackets"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5579:1: ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '[' kw= ']' ) ;
    public final AntlrDatatypeRuleToken ruleArrayBrackets() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5582:28: ( (kw= '[' kw= ']' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5583:1: (kw= '[' kw= ']' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5583:1: (kw= '[' kw= ']' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5584:2: kw= '[' kw= ']'
            {
            kw=(Token)match(input,62,FOLLOW_62_in_ruleArrayBrackets13139); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
                  
            }
            kw=(Token)match(input,63,FOLLOW_63_in_ruleArrayBrackets13152); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleArrayBrackets"


    // $ANTLR start "entryRuleXFunctionTypeRef"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5603:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
    public final EObject entryRuleXFunctionTypeRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXFunctionTypeRef = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5604:2: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5605:2: iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXFunctionTypeRefRule()); 
            }
            pushFollow(FOLLOW_ruleXFunctionTypeRef_in_entryRuleXFunctionTypeRef13192);
            iv_ruleXFunctionTypeRef=ruleXFunctionTypeRef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXFunctionTypeRef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXFunctionTypeRef13202); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXFunctionTypeRef"


    // $ANTLR start "ruleXFunctionTypeRef"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5612:1: ruleXFunctionTypeRef returns [EObject current=null] : ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) ;
    public final EObject ruleXFunctionTypeRef() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        EObject lv_paramTypes_1_0 = null;

        EObject lv_paramTypes_3_0 = null;

        EObject lv_returnType_6_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5615:28: ( ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5616:1: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5616:1: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5616:2: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5616:2: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )?
            int alt101=2;
            int LA101_0 = input.LA(1);

            if ( (LA101_0==28) ) {
                alt101=1;
            }
            switch (alt101) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5616:4: otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')'
                    {
                    otherlv_0=(Token)match(input,28,FOLLOW_28_in_ruleXFunctionTypeRef13240); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
                          
                    }
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5620:1: ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )?
                    int alt100=2;
                    int LA100_0 = input.LA(1);

                    if ( (LA100_0==RULE_ID||LA100_0==28||LA100_0==48) ) {
                        alt100=1;
                    }
                    switch (alt100) {
                        case 1 :
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5620:2: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5620:2: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5621:1: (lv_paramTypes_1_0= ruleJvmTypeReference )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5621:1: (lv_paramTypes_1_0= ruleJvmTypeReference )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5622:3: lv_paramTypes_1_0= ruleJvmTypeReference
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef13262);
                            lv_paramTypes_1_0=ruleJvmTypeReference();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"paramTypes",
                                      		lv_paramTypes_1_0, 
                                      		"JvmTypeReference");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5638:2: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
                            loop99:
                            do {
                                int alt99=2;
                                int LA99_0 = input.LA(1);

                                if ( (LA99_0==29) ) {
                                    alt99=1;
                                }


                                switch (alt99) {
                            	case 1 :
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5638:4: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
                            	    {
                            	    otherlv_2=(Token)match(input,29,FOLLOW_29_in_ruleXFunctionTypeRef13275); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
                            	          
                            	    }
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5642:1: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5643:1: (lv_paramTypes_3_0= ruleJvmTypeReference )
                            	    {
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5643:1: (lv_paramTypes_3_0= ruleJvmTypeReference )
                            	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5644:3: lv_paramTypes_3_0= ruleJvmTypeReference
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef13296);
                            	    lv_paramTypes_3_0=ruleJvmTypeReference();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"paramTypes",
                            	              		lv_paramTypes_3_0, 
                            	              		"JvmTypeReference");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop99;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_4=(Token)match(input,30,FOLLOW_30_in_ruleXFunctionTypeRef13312); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
                          
                    }

                    }
                    break;

            }

            otherlv_5=(Token)match(input,48,FOLLOW_48_in_ruleXFunctionTypeRef13326); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5668:1: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5669:1: (lv_returnType_6_0= ruleJvmTypeReference )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5669:1: (lv_returnType_6_0= ruleJvmTypeReference )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5670:3: lv_returnType_6_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef13347);
            lv_returnType_6_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
              	        }
                     		set(
                     			current, 
                     			"returnType",
                      		lv_returnType_6_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXFunctionTypeRef"


    // $ANTLR start "entryRuleJvmParameterizedTypeReference"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5694:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
    public final EObject entryRuleJvmParameterizedTypeReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmParameterizedTypeReference = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5695:2: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5696:2: iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
            }
            pushFollow(FOLLOW_ruleJvmParameterizedTypeReference_in_entryRuleJvmParameterizedTypeReference13383);
            iv_ruleJvmParameterizedTypeReference=ruleJvmParameterizedTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmParameterizedTypeReference; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmParameterizedTypeReference13393); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmParameterizedTypeReference"


    // $ANTLR start "ruleJvmParameterizedTypeReference"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5703:1: ruleJvmParameterizedTypeReference returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ) ;
    public final EObject ruleJvmParameterizedTypeReference() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_arguments_2_0 = null;

        EObject lv_arguments_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5706:28: ( ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5707:1: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5707:1: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5707:2: ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5707:2: ( ( ruleQualifiedName ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5708:1: ( ruleQualifiedName )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5708:1: ( ruleQualifiedName )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5709:3: ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
              	        }
                      
            }
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleJvmParameterizedTypeReference13441);
            ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5722:2: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
            int alt103=2;
            alt103 = dfa103.predict(input);
            switch (alt103) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5722:3: ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>'
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5722:3: ( ( '<' )=>otherlv_1= '<' )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5722:4: ( '<' )=>otherlv_1= '<'
                    {
                    otherlv_1=(Token)match(input,44,FOLLOW_44_in_ruleJvmParameterizedTypeReference13462); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
                          
                    }

                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5727:2: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5728:1: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5728:1: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5729:3: lv_arguments_2_0= ruleJvmArgumentTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleJvmParameterizedTypeReference13484);
                    lv_arguments_2_0=ruleJvmArgumentTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
                      	        }
                             		add(
                             			current, 
                             			"arguments",
                              		lv_arguments_2_0, 
                              		"JvmArgumentTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5745:2: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
                    loop102:
                    do {
                        int alt102=2;
                        int LA102_0 = input.LA(1);

                        if ( (LA102_0==29) ) {
                            alt102=1;
                        }


                        switch (alt102) {
                    	case 1 :
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5745:4: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
                    	    {
                    	    otherlv_3=(Token)match(input,29,FOLLOW_29_in_ruleJvmParameterizedTypeReference13497); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
                    	          
                    	    }
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5749:1: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5750:1: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
                    	    {
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5750:1: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
                    	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5751:3: lv_arguments_4_0= ruleJvmArgumentTypeReference
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleJvmParameterizedTypeReference13518);
                    	    lv_arguments_4_0=ruleJvmArgumentTypeReference();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"arguments",
                    	              		lv_arguments_4_0, 
                    	              		"JvmArgumentTypeReference");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop102;
                        }
                    } while (true);

                    otherlv_5=(Token)match(input,43,FOLLOW_43_in_ruleJvmParameterizedTypeReference13532); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmParameterizedTypeReference"


    // $ANTLR start "entryRuleJvmArgumentTypeReference"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5779:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
    public final EObject entryRuleJvmArgumentTypeReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmArgumentTypeReference = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5780:2: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5781:2: iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceRule()); 
            }
            pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_entryRuleJvmArgumentTypeReference13570);
            iv_ruleJvmArgumentTypeReference=ruleJvmArgumentTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmArgumentTypeReference; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmArgumentTypeReference13580); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmArgumentTypeReference"


    // $ANTLR start "ruleJvmArgumentTypeReference"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5788:1: ruleJvmArgumentTypeReference returns [EObject current=null] : (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) ;
    public final EObject ruleJvmArgumentTypeReference() throws RecognitionException {
        EObject current = null;

        EObject this_JvmTypeReference_0 = null;

        EObject this_JvmWildcardTypeReference_1 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5791:28: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5792:1: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5792:1: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
            int alt104=2;
            int LA104_0 = input.LA(1);

            if ( (LA104_0==RULE_ID||LA104_0==28||LA104_0==48) ) {
                alt104=1;
            }
            else if ( (LA104_0==90) ) {
                alt104=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 104, 0, input);

                throw nvae;
            }
            switch (alt104) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5793:5: this_JvmTypeReference_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleJvmArgumentTypeReference13627);
                    this_JvmTypeReference_0=ruleJvmTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_JvmTypeReference_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5803:5: this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleJvmWildcardTypeReference_in_ruleJvmArgumentTypeReference13654);
                    this_JvmWildcardTypeReference_1=ruleJvmWildcardTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_JvmWildcardTypeReference_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmArgumentTypeReference"


    // $ANTLR start "entryRuleJvmWildcardTypeReference"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5819:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
    public final EObject entryRuleJvmWildcardTypeReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmWildcardTypeReference = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5820:2: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5821:2: iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceRule()); 
            }
            pushFollow(FOLLOW_ruleJvmWildcardTypeReference_in_entryRuleJvmWildcardTypeReference13689);
            iv_ruleJvmWildcardTypeReference=ruleJvmWildcardTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmWildcardTypeReference; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmWildcardTypeReference13699); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmWildcardTypeReference"


    // $ANTLR start "ruleJvmWildcardTypeReference"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5828:1: ruleJvmWildcardTypeReference returns [EObject current=null] : ( () otherlv_1= '?' ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )? ) ;
    public final EObject ruleJvmWildcardTypeReference() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_constraints_2_0 = null;

        EObject lv_constraints_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5831:28: ( ( () otherlv_1= '?' ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )? ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5832:1: ( () otherlv_1= '?' ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )? )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5832:1: ( () otherlv_1= '?' ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )? )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5832:2: () otherlv_1= '?' ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )?
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5832:2: ()
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5833:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,90,FOLLOW_90_in_ruleJvmWildcardTypeReference13745); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5842:1: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )?
            int alt105=3;
            int LA105_0 = input.LA(1);

            if ( (LA105_0==74) ) {
                alt105=1;
            }
            else if ( (LA105_0==78) ) {
                alt105=2;
            }
            switch (alt105) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5842:2: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5842:2: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5843:1: (lv_constraints_2_0= ruleJvmUpperBound )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5843:1: (lv_constraints_2_0= ruleJvmUpperBound )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5844:3: lv_constraints_2_0= ruleJvmUpperBound
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmUpperBound_in_ruleJvmWildcardTypeReference13767);
                    lv_constraints_2_0=ruleJvmUpperBound();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
                      	        }
                             		add(
                             			current, 
                             			"constraints",
                              		lv_constraints_2_0, 
                              		"JvmUpperBound");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5861:6: ( (lv_constraints_3_0= ruleJvmLowerBound ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5861:6: ( (lv_constraints_3_0= ruleJvmLowerBound ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5862:1: (lv_constraints_3_0= ruleJvmLowerBound )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5862:1: (lv_constraints_3_0= ruleJvmLowerBound )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5863:3: lv_constraints_3_0= ruleJvmLowerBound
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmLowerBound_in_ruleJvmWildcardTypeReference13794);
                    lv_constraints_3_0=ruleJvmLowerBound();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
                      	        }
                             		add(
                             			current, 
                             			"constraints",
                              		lv_constraints_3_0, 
                              		"JvmLowerBound");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmWildcardTypeReference"


    // $ANTLR start "entryRuleJvmUpperBound"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5887:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
    public final EObject entryRuleJvmUpperBound() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmUpperBound = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5888:2: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5889:2: iv_ruleJvmUpperBound= ruleJvmUpperBound EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmUpperBoundRule()); 
            }
            pushFollow(FOLLOW_ruleJvmUpperBound_in_entryRuleJvmUpperBound13832);
            iv_ruleJvmUpperBound=ruleJvmUpperBound();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmUpperBound; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmUpperBound13842); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmUpperBound"


    // $ANTLR start "ruleJvmUpperBound"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5896:1: ruleJvmUpperBound returns [EObject current=null] : (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
    public final EObject ruleJvmUpperBound() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_typeReference_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5899:28: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5900:1: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5900:1: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5900:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            {
            otherlv_0=(Token)match(input,74,FOLLOW_74_in_ruleJvmUpperBound13879); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5904:1: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5905:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5905:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5906:3: lv_typeReference_1_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleJvmUpperBound13900);
            lv_typeReference_1_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getJvmUpperBoundRule());
              	        }
                     		set(
                     			current, 
                     			"typeReference",
                      		lv_typeReference_1_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmUpperBound"


    // $ANTLR start "entryRuleJvmUpperBoundAnded"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5930:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
    public final EObject entryRuleJvmUpperBoundAnded() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmUpperBoundAnded = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5931:2: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5932:2: iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmUpperBoundAndedRule()); 
            }
            pushFollow(FOLLOW_ruleJvmUpperBoundAnded_in_entryRuleJvmUpperBoundAnded13936);
            iv_ruleJvmUpperBoundAnded=ruleJvmUpperBoundAnded();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmUpperBoundAnded; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmUpperBoundAnded13946); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmUpperBoundAnded"


    // $ANTLR start "ruleJvmUpperBoundAnded"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5939:1: ruleJvmUpperBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
    public final EObject ruleJvmUpperBoundAnded() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_typeReference_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5942:28: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5943:1: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5943:1: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5943:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            {
            otherlv_0=(Token)match(input,91,FOLLOW_91_in_ruleJvmUpperBoundAnded13983); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5947:1: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5948:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5948:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5949:3: lv_typeReference_1_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleJvmUpperBoundAnded14004);
            lv_typeReference_1_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getJvmUpperBoundAndedRule());
              	        }
                     		set(
                     			current, 
                     			"typeReference",
                      		lv_typeReference_1_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmUpperBoundAnded"


    // $ANTLR start "entryRuleJvmLowerBound"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5973:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
    public final EObject entryRuleJvmLowerBound() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmLowerBound = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5974:2: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5975:2: iv_ruleJvmLowerBound= ruleJvmLowerBound EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmLowerBoundRule()); 
            }
            pushFollow(FOLLOW_ruleJvmLowerBound_in_entryRuleJvmLowerBound14040);
            iv_ruleJvmLowerBound=ruleJvmLowerBound();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmLowerBound; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmLowerBound14050); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmLowerBound"


    // $ANTLR start "ruleJvmLowerBound"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5982:1: ruleJvmLowerBound returns [EObject current=null] : (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
    public final EObject ruleJvmLowerBound() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_typeReference_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5985:28: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5986:1: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5986:1: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5986:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            {
            otherlv_0=(Token)match(input,78,FOLLOW_78_in_ruleJvmLowerBound14087); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5990:1: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5991:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5991:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5992:3: lv_typeReference_1_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleJvmLowerBound14108);
            lv_typeReference_1_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getJvmLowerBoundRule());
              	        }
                     		set(
                     			current, 
                     			"typeReference",
                      		lv_typeReference_1_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmLowerBound"


    // $ANTLR start "entryRuleQualifiedNameWithWildcard"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6018:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
    public final String entryRuleQualifiedNameWithWildcard() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedNameWithWildcard = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6019:2: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6020:2: iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule()); 
            }
            pushFollow(FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard14147);
            iv_ruleQualifiedNameWithWildcard=ruleQualifiedNameWithWildcard();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleQualifiedNameWithWildcard.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard14158); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedNameWithWildcard"


    // $ANTLR start "ruleQualifiedNameWithWildcard"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6027:1: ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildcard() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_QualifiedName_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6030:28: ( (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6031:1: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6031:1: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6032:5: this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*'
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildcard14205);
            this_QualifiedName_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(this_QualifiedName_0);
                  
            }
            if ( state.backtracking==0 ) {
               
                      afterParserOrEnumRuleCall();
                  
            }
            kw=(Token)match(input,17,FOLLOW_17_in_ruleQualifiedNameWithWildcard14223); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1()); 
                  
            }
            kw=(Token)match(input,18,FOLLOW_18_in_ruleQualifiedNameWithWildcard14236); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2()); 
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedNameWithWildcard"


    // $ANTLR start "entryRuleValidID"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6062:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
    public final String entryRuleValidID() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleValidID = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6063:2: (iv_ruleValidID= ruleValidID EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6064:2: iv_ruleValidID= ruleValidID EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getValidIDRule()); 
            }
            pushFollow(FOLLOW_ruleValidID_in_entryRuleValidID14277);
            iv_ruleValidID=ruleValidID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleValidID.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleValidID14288); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleValidID"


    // $ANTLR start "ruleValidID"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6071:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
    public final AntlrDatatypeRuleToken ruleValidID() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6074:28: (this_ID_0= RULE_ID )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6075:5: this_ID_0= RULE_ID
            {
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleValidID14327); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(this_ID_0);
                  
            }
            if ( state.backtracking==0 ) {
               
                  newLeafNode(this_ID_0, grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleValidID"


    // $ANTLR start "entryRuleXImportDeclaration"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6092:1: entryRuleXImportDeclaration returns [EObject current=null] : iv_ruleXImportDeclaration= ruleXImportDeclaration EOF ;
    public final EObject entryRuleXImportDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXImportDeclaration = null;


        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6093:2: (iv_ruleXImportDeclaration= ruleXImportDeclaration EOF )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6094:2: iv_ruleXImportDeclaration= ruleXImportDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXImportDeclarationRule()); 
            }
            pushFollow(FOLLOW_ruleXImportDeclaration_in_entryRuleXImportDeclaration14373);
            iv_ruleXImportDeclaration=ruleXImportDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXImportDeclaration; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXImportDeclaration14383); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXImportDeclaration"


    // $ANTLR start "ruleXImportDeclaration"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6101:1: ruleXImportDeclaration returns [EObject current=null] : (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedName ) ) otherlv_4= '.' otherlv_5= '*' ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? ) ;
    public final EObject ruleXImportDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_static_1_0=null;
        Token lv_extension_2_0=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_8=null;
        AntlrDatatypeRuleToken lv_importedNamespace_7_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6104:28: ( (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedName ) ) otherlv_4= '.' otherlv_5= '*' ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6105:1: (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedName ) ) otherlv_4= '.' otherlv_5= '*' ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6105:1: (otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedName ) ) otherlv_4= '.' otherlv_5= '*' ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )? )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6105:3: otherlv_0= 'import' ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedName ) ) otherlv_4= '.' otherlv_5= '*' ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) ) (otherlv_8= ';' )?
            {
            otherlv_0=(Token)match(input,76,FOLLOW_76_in_ruleXImportDeclaration14420); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getXImportDeclarationAccess().getImportKeyword_0());
                  
            }
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6109:1: ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedName ) ) otherlv_4= '.' otherlv_5= '*' ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) )
            int alt107=3;
            alt107 = dfa107.predict(input);
            switch (alt107) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6109:2: ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedName ) ) otherlv_4= '.' otherlv_5= '*' )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6109:2: ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedName ) ) otherlv_4= '.' otherlv_5= '*' )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6109:3: ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedName ) ) otherlv_4= '.' otherlv_5= '*'
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6109:3: ( (lv_static_1_0= 'static' ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6110:1: (lv_static_1_0= 'static' )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6110:1: (lv_static_1_0= 'static' )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6111:3: lv_static_1_0= 'static'
                    {
                    lv_static_1_0=(Token)match(input,75,FOLLOW_75_in_ruleXImportDeclaration14440); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_static_1_0, grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_1_0_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXImportDeclarationRule());
                      	        }
                             		setWithLastConsumed(current, "static", true, "static");
                      	    
                    }

                    }


                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6124:2: ( (lv_extension_2_0= 'extension' ) )?
                    int alt106=2;
                    int LA106_0 = input.LA(1);

                    if ( (LA106_0==77) ) {
                        alt106=1;
                    }
                    switch (alt106) {
                        case 1 :
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6125:1: (lv_extension_2_0= 'extension' )
                            {
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6125:1: (lv_extension_2_0= 'extension' )
                            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6126:3: lv_extension_2_0= 'extension'
                            {
                            lv_extension_2_0=(Token)match(input,77,FOLLOW_77_in_ruleXImportDeclaration14471); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_extension_2_0, grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_1_0_1_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getXImportDeclarationRule());
                              	        }
                                     		setWithLastConsumed(current, "extension", true, "extension");
                              	    
                            }

                            }


                            }
                            break;

                    }

                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6139:3: ( ( ruleQualifiedName ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6140:1: ( ruleQualifiedName )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6140:1: ( ruleQualifiedName )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6141:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXImportDeclarationRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_0_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleXImportDeclaration14508);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_4=(Token)match(input,17,FOLLOW_17_in_ruleXImportDeclaration14520); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getXImportDeclarationAccess().getFullStopKeyword_1_0_3());
                          
                    }
                    otherlv_5=(Token)match(input,18,FOLLOW_18_in_ruleXImportDeclaration14532); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getXImportDeclarationAccess().getAsteriskKeyword_1_0_4());
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6163:6: ( ( ruleQualifiedName ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6163:6: ( ( ruleQualifiedName ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6164:1: ( ruleQualifiedName )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6164:1: ( ruleQualifiedName )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6165:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXImportDeclarationRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleXImportDeclaration14562);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6179:6: ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6179:6: ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6180:1: (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6180:1: (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6181:3: lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedNameWithWildcard_in_ruleXImportDeclaration14589);
                    lv_importedNamespace_7_0=ruleQualifiedNameWithWildcard();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"importedNamespace",
                              		lv_importedNamespace_7_0, 
                              		"QualifiedNameWithWildcard");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6197:3: (otherlv_8= ';' )?
            int alt108=2;
            int LA108_0 = input.LA(1);

            if ( (LA108_0==65) ) {
                alt108=1;
            }
            switch (alt108) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6197:5: otherlv_8= ';'
                    {
                    otherlv_8=(Token)match(input,65,FOLLOW_65_in_ruleXImportDeclaration14603); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXImportDeclaration"


    // $ANTLR start "ruleVisibility"
    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6209:1: ruleVisibility returns [Enumerator current=null] : ( (enumLiteral_0= 'publico' ) | (enumLiteral_1= 'privado' ) | (enumLiteral_2= 'protegido' ) ) ;
    public final Enumerator ruleVisibility() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;

         enterRule(); 
        try {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6211:28: ( ( (enumLiteral_0= 'publico' ) | (enumLiteral_1= 'privado' ) | (enumLiteral_2= 'protegido' ) ) )
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6212:1: ( (enumLiteral_0= 'publico' ) | (enumLiteral_1= 'privado' ) | (enumLiteral_2= 'protegido' ) )
            {
            // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6212:1: ( (enumLiteral_0= 'publico' ) | (enumLiteral_1= 'privado' ) | (enumLiteral_2= 'protegido' ) )
            int alt109=3;
            switch ( input.LA(1) ) {
            case 92:
                {
                alt109=1;
                }
                break;
            case 93:
                {
                alt109=2;
                }
                break;
            case 94:
                {
                alt109=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 109, 0, input);

                throw nvae;
            }

            switch (alt109) {
                case 1 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6212:2: (enumLiteral_0= 'publico' )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6212:2: (enumLiteral_0= 'publico' )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6212:4: enumLiteral_0= 'publico'
                    {
                    enumLiteral_0=(Token)match(input,92,FOLLOW_92_in_ruleVisibility14655); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getVisibilityAccess().getPUBLICEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_0, grammarAccess.getVisibilityAccess().getPUBLICEnumLiteralDeclaration_0()); 
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6218:6: (enumLiteral_1= 'privado' )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6218:6: (enumLiteral_1= 'privado' )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6218:8: enumLiteral_1= 'privado'
                    {
                    enumLiteral_1=(Token)match(input,93,FOLLOW_93_in_ruleVisibility14672); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getVisibilityAccess().getPRIVATEEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_1, grammarAccess.getVisibilityAccess().getPRIVATEEnumLiteralDeclaration_1()); 
                          
                    }

                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6224:6: (enumLiteral_2= 'protegido' )
                    {
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6224:6: (enumLiteral_2= 'protegido' )
                    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:6224:8: enumLiteral_2= 'protegido'
                    {
                    enumLiteral_2=(Token)match(input,94,FOLLOW_94_in_ruleVisibility14689); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getVisibilityAccess().getPROTECTEDEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_2, grammarAccess.getVisibilityAccess().getPROTECTEDEnumLiteralDeclaration_2()); 
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVisibility"

    // $ANTLR start synpred1_InternalMyDsl
    public final void synpred1_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1040:3: ( ( () ( ( ruleOpMultiAssign ) ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1040:4: ( () ( ( ruleOpMultiAssign ) ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1040:4: ( () ( ( ruleOpMultiAssign ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1040:5: () ( ( ruleOpMultiAssign ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1040:5: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1041:1: 
        {
        }

        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1041:2: ( ( ruleOpMultiAssign ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1042:1: ( ruleOpMultiAssign )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1042:1: ( ruleOpMultiAssign )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1043:3: ruleOpMultiAssign
        {
        pushFollow(FOLLOW_ruleOpMultiAssign_in_synpred1_InternalMyDsl2269);
        ruleOpMultiAssign();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred1_InternalMyDsl

    // $ANTLR start synpred2_InternalMyDsl
    public final void synpred2_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1175:3: ( ( () ( ( ruleOpOr ) ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1175:4: ( () ( ( ruleOpOr ) ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1175:4: ( () ( ( ruleOpOr ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1175:5: () ( ( ruleOpOr ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1175:5: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1176:1: 
        {
        }

        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1176:2: ( ( ruleOpOr ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1177:1: ( ruleOpOr )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1177:1: ( ruleOpOr )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1178:3: ruleOpOr
        {
        pushFollow(FOLLOW_ruleOpOr_in_synpred2_InternalMyDsl2638);
        ruleOpOr();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred2_InternalMyDsl

    // $ANTLR start synpred3_InternalMyDsl
    public final void synpred3_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1276:3: ( ( () ( ( ruleOpAnd ) ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1276:4: ( () ( ( ruleOpAnd ) ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1276:4: ( () ( ( ruleOpAnd ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1276:5: () ( ( ruleOpAnd ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1276:5: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1277:1: 
        {
        }

        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1277:2: ( ( ruleOpAnd ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1278:1: ( ruleOpAnd )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1278:1: ( ruleOpAnd )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1279:3: ruleOpAnd
        {
        pushFollow(FOLLOW_ruleOpAnd_in_synpred3_InternalMyDsl2897);
        ruleOpAnd();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred3_InternalMyDsl

    // $ANTLR start synpred4_InternalMyDsl
    public final void synpred4_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1377:3: ( ( () ( ( ruleOpEquality ) ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1377:4: ( () ( ( ruleOpEquality ) ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1377:4: ( () ( ( ruleOpEquality ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1377:5: () ( ( ruleOpEquality ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1377:5: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1378:1: 
        {
        }

        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1378:2: ( ( ruleOpEquality ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1379:1: ( ruleOpEquality )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1379:1: ( ruleOpEquality )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1380:3: ruleOpEquality
        {
        pushFollow(FOLLOW_ruleOpEquality_in_synpred4_InternalMyDsl3156);
        ruleOpEquality();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred4_InternalMyDsl

    // $ANTLR start synpred5_InternalMyDsl
    public final void synpred5_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1499:4: ( ( () 'instanceof' ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1499:5: ( () 'instanceof' )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1499:5: ( () 'instanceof' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1499:6: () 'instanceof'
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1499:6: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1500:1: 
        {
        }

        match(input,40,FOLLOW_40_in_synpred5_InternalMyDsl3470); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred5_InternalMyDsl

    // $ANTLR start synpred6_InternalMyDsl
    public final void synpred6_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1530:8: ( ( () ( ( ruleOpCompare ) ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1530:9: ( () ( ( ruleOpCompare ) ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1530:9: ( () ( ( ruleOpCompare ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1530:10: () ( ( ruleOpCompare ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1530:10: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1531:1: 
        {
        }

        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1531:2: ( ( ruleOpCompare ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1532:1: ( ruleOpCompare )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1532:1: ( ruleOpCompare )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1533:3: ruleOpCompare
        {
        pushFollow(FOLLOW_ruleOpCompare_in_synpred6_InternalMyDsl3541);
        ruleOpCompare();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred6_InternalMyDsl

    // $ANTLR start synpred7_InternalMyDsl
    public final void synpred7_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1652:3: ( ( () ( ( ruleOpOther ) ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1652:4: ( () ( ( ruleOpOther ) ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1652:4: ( () ( ( ruleOpOther ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1652:5: () ( ( ruleOpOther ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1652:5: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1653:1: 
        {
        }

        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1653:2: ( ( ruleOpOther ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1654:1: ( ruleOpOther )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1654:1: ( ruleOpOther )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1655:3: ruleOpOther
        {
        pushFollow(FOLLOW_ruleOpOther_in_synpred7_InternalMyDsl3860);
        ruleOpOther();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred7_InternalMyDsl

    // $ANTLR start synpred8_InternalMyDsl
    public final void synpred8_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1764:3: ( ( '>' '>' ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1764:4: ( '>' '>' )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1764:4: ( '>' '>' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1765:2: '>' '>'
        {
        match(input,43,FOLLOW_43_in_synpred8_InternalMyDsl4129); if (state.failed) return ;
        match(input,43,FOLLOW_43_in_synpred8_InternalMyDsl4134); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred8_InternalMyDsl

    // $ANTLR start synpred9_InternalMyDsl
    public final void synpred9_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1794:3: ( ( '<' '<' ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1794:4: ( '<' '<' )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1794:4: ( '<' '<' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1795:2: '<' '<'
        {
        match(input,44,FOLLOW_44_in_synpred9_InternalMyDsl4216); if (state.failed) return ;
        match(input,44,FOLLOW_44_in_synpred9_InternalMyDsl4221); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred9_InternalMyDsl

    // $ANTLR start synpred10_InternalMyDsl
    public final void synpred10_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1868:3: ( ( () ( ( ruleOpAdd ) ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1868:4: ( () ( ( ruleOpAdd ) ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1868:4: ( () ( ( ruleOpAdd ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1868:5: () ( ( ruleOpAdd ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1868:5: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1869:1: 
        {
        }

        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1869:2: ( ( ruleOpAdd ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1870:1: ( ruleOpAdd )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1870:1: ( ruleOpAdd )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1871:3: ruleOpAdd
        {
        pushFollow(FOLLOW_ruleOpAdd_in_synpred10_InternalMyDsl4443);
        ruleOpAdd();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred10_InternalMyDsl

    // $ANTLR start synpred11_InternalMyDsl
    public final void synpred11_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1976:3: ( ( () ( ( ruleOpMulti ) ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1976:4: ( () ( ( ruleOpMulti ) ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1976:4: ( () ( ( ruleOpMulti ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1976:5: () ( ( ruleOpMulti ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1976:5: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1977:1: 
        {
        }

        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1977:2: ( ( ruleOpMulti ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1978:1: ( ruleOpMulti )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1978:1: ( ruleOpMulti )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:1979:3: ruleOpMulti
        {
        pushFollow(FOLLOW_ruleOpMulti_in_synpred11_InternalMyDsl4723);
        ruleOpMulti();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred11_InternalMyDsl

    // $ANTLR start synpred12_InternalMyDsl
    public final void synpred12_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2209:3: ( ( () 'as' ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2209:4: ( () 'as' )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2209:4: ( () 'as' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2209:5: () 'as'
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2209:5: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2210:1: 
        {
        }

        match(input,58,FOLLOW_58_in_synpred12_InternalMyDsl5317); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred12_InternalMyDsl

    // $ANTLR start synpred13_InternalMyDsl
    public final void synpred13_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2269:4: ( ( () '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2269:5: ( () '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2269:5: ( () '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2269:6: () '.' ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2269:6: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2270:1: 
        {
        }

        match(input,17,FOLLOW_17_in_synpred13_InternalMyDsl5471); if (state.failed) return ;
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2271:1: ( ( ruleFeatureCallID ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2272:1: ( ruleFeatureCallID )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2272:1: ( ruleFeatureCallID )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2273:3: ruleFeatureCallID
        {
        pushFollow(FOLLOW_ruleFeatureCallID_in_synpred13_InternalMyDsl5480);
        ruleFeatureCallID();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        pushFollow(FOLLOW_ruleOpSingleAssign_in_synpred13_InternalMyDsl5486);
        ruleOpSingleAssign();

        state._fsp--;
        if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred13_InternalMyDsl

    // $ANTLR start synpred14_InternalMyDsl
    public final void synpred14_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2327:8: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2327:9: ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2327:9: ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2327:10: () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2327:10: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2328:1: 
        {
        }

        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2328:2: ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) )
        int alt110=3;
        switch ( input.LA(1) ) {
        case 17:
            {
            alt110=1;
            }
            break;
        case 59:
            {
            alt110=2;
            }
            break;
        case 60:
            {
            alt110=3;
            }
            break;
        default:
            if (state.backtracking>0) {state.failed=true; return ;}
            NoViableAltException nvae =
                new NoViableAltException("", 110, 0, input);

            throw nvae;
        }

        switch (alt110) {
            case 1 :
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2328:4: '.'
                {
                match(input,17,FOLLOW_17_in_synpred14_InternalMyDsl5589); if (state.failed) return ;

                }
                break;
            case 2 :
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2330:6: ( ( '?.' ) )
                {
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2330:6: ( ( '?.' ) )
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2331:1: ( '?.' )
                {
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2331:1: ( '?.' )
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2332:2: '?.'
                {
                match(input,59,FOLLOW_59_in_synpred14_InternalMyDsl5603); if (state.failed) return ;

                }


                }


                }
                break;
            case 3 :
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2337:6: ( ( '*.' ) )
                {
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2337:6: ( ( '*.' ) )
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2338:1: ( '*.' )
                {
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2338:1: ( '*.' )
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2339:2: '*.'
                {
                match(input,60,FOLLOW_60_in_synpred14_InternalMyDsl5623); if (state.failed) return ;

                }


                }


                }
                break;

        }


        }


        }
    }
    // $ANTLR end synpred14_InternalMyDsl

    // $ANTLR start synpred15_InternalMyDsl
    public final void synpred15_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2448:4: ( ( '(' ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2449:1: ( '(' )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2449:1: ( '(' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2450:2: '('
        {
        match(input,28,FOLLOW_28_in_synpred15_InternalMyDsl5850); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred15_InternalMyDsl

    // $ANTLR start synpred16_InternalMyDsl
    public final void synpred16_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2469:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2469:5: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2469:5: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2469:6: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2469:6: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2470:1: 
        {
        }

        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2470:2: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
        int alt112=2;
        int LA112_0 = input.LA(1);

        if ( (LA112_0==RULE_ID||LA112_0==28||LA112_0==48) ) {
            alt112=1;
        }
        switch (alt112) {
            case 1 :
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2470:3: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                {
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2470:3: ( ( ruleJvmFormalParameter ) )
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2471:1: ( ruleJvmFormalParameter )
                {
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2471:1: ( ruleJvmFormalParameter )
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2472:1: ruleJvmFormalParameter
                {
                pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred16_InternalMyDsl5902);
                ruleJvmFormalParameter();

                state._fsp--;
                if (state.failed) return ;

                }


                }

                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2474:2: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                loop111:
                do {
                    int alt111=2;
                    int LA111_0 = input.LA(1);

                    if ( (LA111_0==29) ) {
                        alt111=1;
                    }


                    switch (alt111) {
                	case 1 :
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2474:4: ',' ( ( ruleJvmFormalParameter ) )
                	    {
                	    match(input,29,FOLLOW_29_in_synpred16_InternalMyDsl5909); if (state.failed) return ;
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2475:1: ( ( ruleJvmFormalParameter ) )
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2476:1: ( ruleJvmFormalParameter )
                	    {
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2476:1: ( ruleJvmFormalParameter )
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2477:1: ruleJvmFormalParameter
                	    {
                	    pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred16_InternalMyDsl5916);
                	    ruleJvmFormalParameter();

                	    state._fsp--;
                	    if (state.failed) return ;

                	    }


                	    }


                	    }
                	    break;

                	default :
                	    break loop111;
                    }
                } while (true);


                }
                break;

        }

        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2479:6: ( ( '|' ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2480:1: ( '|' )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2480:1: ( '|' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2481:2: '|'
        {
        match(input,64,FOLLOW_64_in_synpred16_InternalMyDsl5930); if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred16_InternalMyDsl

    // $ANTLR start synpred17_InternalMyDsl
    public final void synpred17_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2548:4: ( ( () '[' ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2548:5: ( () '[' )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2548:5: ( () '[' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2548:6: () '['
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2548:6: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2549:1: 
        {
        }

        match(input,62,FOLLOW_62_in_synpred17_InternalMyDsl6050); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred17_InternalMyDsl

    // $ANTLR start synpred18_InternalMyDsl
    public final void synpred18_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2749:7: ( ( () '[' ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2749:8: ( () '[' )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2749:8: ( () '[' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2749:9: () '['
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2749:9: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:2750:1: 
        {
        }

        match(input,62,FOLLOW_62_in_synpred18_InternalMyDsl6601); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred18_InternalMyDsl

    // $ANTLR start synpred20_InternalMyDsl
    public final void synpred20_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3041:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3041:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3041:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3041:6: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3041:6: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
        int alt114=2;
        int LA114_0 = input.LA(1);

        if ( (LA114_0==RULE_ID||LA114_0==28||LA114_0==48) ) {
            alt114=1;
        }
        switch (alt114) {
            case 1 :
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3041:7: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                {
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3041:7: ( ( ruleJvmFormalParameter ) )
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3042:1: ( ruleJvmFormalParameter )
                {
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3042:1: ( ruleJvmFormalParameter )
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3043:1: ruleJvmFormalParameter
                {
                pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred20_InternalMyDsl7351);
                ruleJvmFormalParameter();

                state._fsp--;
                if (state.failed) return ;

                }


                }

                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3045:2: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                loop113:
                do {
                    int alt113=2;
                    int LA113_0 = input.LA(1);

                    if ( (LA113_0==29) ) {
                        alt113=1;
                    }


                    switch (alt113) {
                	case 1 :
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3045:4: ',' ( ( ruleJvmFormalParameter ) )
                	    {
                	    match(input,29,FOLLOW_29_in_synpred20_InternalMyDsl7358); if (state.failed) return ;
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3046:1: ( ( ruleJvmFormalParameter ) )
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3047:1: ( ruleJvmFormalParameter )
                	    {
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3047:1: ( ruleJvmFormalParameter )
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3048:1: ruleJvmFormalParameter
                	    {
                	    pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred20_InternalMyDsl7365);
                	    ruleJvmFormalParameter();

                	    state._fsp--;
                	    if (state.failed) return ;

                	    }


                	    }


                	    }
                	    break;

                	default :
                	    break loop113;
                    }
                } while (true);


                }
                break;

        }

        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3050:6: ( ( '|' ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3051:1: ( '|' )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3051:1: ( '|' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3052:2: '|'
        {
        match(input,64,FOLLOW_64_in_synpred20_InternalMyDsl7379); if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred20_InternalMyDsl

    // $ANTLR start synpred22_InternalMyDsl
    public final void synpred22_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3411:4: ( 'else' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3411:6: 'else'
        {
        match(input,67,FOLLOW_67_in_synpred22_InternalMyDsl8162); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred22_InternalMyDsl

    // $ANTLR start synpred23_InternalMyDsl
    public final void synpred23_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3465:4: ( ( ( ( ruleValidID ) ) ':' ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3465:5: ( ( ( ruleValidID ) ) ':' )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3465:5: ( ( ( ruleValidID ) ) ':' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3465:6: ( ( ruleValidID ) ) ':'
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3465:6: ( ( ruleValidID ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3466:1: ( ruleValidID )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3466:1: ( ruleValidID )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3467:1: ruleValidID
        {
        pushFollow(FOLLOW_ruleValidID_in_synpred23_InternalMyDsl8304);
        ruleValidID();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        match(input,25,FOLLOW_25_in_synpred23_InternalMyDsl8310); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred23_InternalMyDsl

    // $ANTLR start synpred24_InternalMyDsl
    public final void synpred24_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3511:8: ( ( '(' ( ( ruleValidID ) ) ':' ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3511:9: ( '(' ( ( ruleValidID ) ) ':' )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3511:9: ( '(' ( ( ruleValidID ) ) ':' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3511:11: '(' ( ( ruleValidID ) ) ':'
        {
        match(input,28,FOLLOW_28_in_synpred24_InternalMyDsl8386); if (state.failed) return ;
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3512:1: ( ( ruleValidID ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3513:1: ( ruleValidID )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3513:1: ( ruleValidID )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:3514:1: ruleValidID
        {
        pushFollow(FOLLOW_ruleValidID_in_synpred24_InternalMyDsl8393);
        ruleValidID();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        match(input,25,FOLLOW_25_in_synpred24_InternalMyDsl8399); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred24_InternalMyDsl

    // $ANTLR start synpred25_InternalMyDsl
    public final void synpred25_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4095:4: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4095:5: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4095:5: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4095:6: ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4095:6: ( ( ruleJvmTypeReference ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4096:1: ( ruleJvmTypeReference )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4096:1: ( ruleJvmTypeReference )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4097:1: ruleJvmTypeReference
        {
        pushFollow(FOLLOW_ruleJvmTypeReference_in_synpred25_InternalMyDsl9664);
        ruleJvmTypeReference();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4099:2: ( ( ruleValidID ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4100:1: ( ruleValidID )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4100:1: ( ruleValidID )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4101:1: ruleValidID
        {
        pushFollow(FOLLOW_ruleValidID_in_synpred25_InternalMyDsl9673);
        ruleValidID();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred25_InternalMyDsl

    // $ANTLR start synpred26_InternalMyDsl
    public final void synpred26_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4399:4: ( ( '(' ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4400:1: ( '(' )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4400:1: ( '(' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4401:2: '('
        {
        match(input,28,FOLLOW_28_in_synpred26_InternalMyDsl10235); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred26_InternalMyDsl

    // $ANTLR start synpred27_InternalMyDsl
    public final void synpred27_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4420:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4420:5: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4420:5: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4420:6: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4420:6: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4421:1: 
        {
        }

        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4421:2: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
        int alt118=2;
        int LA118_0 = input.LA(1);

        if ( (LA118_0==RULE_ID||LA118_0==28||LA118_0==48) ) {
            alt118=1;
        }
        switch (alt118) {
            case 1 :
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4421:3: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                {
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4421:3: ( ( ruleJvmFormalParameter ) )
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4422:1: ( ruleJvmFormalParameter )
                {
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4422:1: ( ruleJvmFormalParameter )
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4423:1: ruleJvmFormalParameter
                {
                pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred27_InternalMyDsl10287);
                ruleJvmFormalParameter();

                state._fsp--;
                if (state.failed) return ;

                }


                }

                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4425:2: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                loop117:
                do {
                    int alt117=2;
                    int LA117_0 = input.LA(1);

                    if ( (LA117_0==29) ) {
                        alt117=1;
                    }


                    switch (alt117) {
                	case 1 :
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4425:4: ',' ( ( ruleJvmFormalParameter ) )
                	    {
                	    match(input,29,FOLLOW_29_in_synpred27_InternalMyDsl10294); if (state.failed) return ;
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4426:1: ( ( ruleJvmFormalParameter ) )
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4427:1: ( ruleJvmFormalParameter )
                	    {
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4427:1: ( ruleJvmFormalParameter )
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4428:1: ruleJvmFormalParameter
                	    {
                	    pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred27_InternalMyDsl10301);
                	    ruleJvmFormalParameter();

                	    state._fsp--;
                	    if (state.failed) return ;

                	    }


                	    }


                	    }
                	    break;

                	default :
                	    break loop117;
                    }
                } while (true);


                }
                break;

        }

        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4430:6: ( ( '|' ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4431:1: ( '|' )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4431:1: ( '|' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4432:2: '|'
        {
        match(input,64,FOLLOW_64_in_synpred27_InternalMyDsl10315); if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred27_InternalMyDsl

    // $ANTLR start synpred28_InternalMyDsl
    public final void synpred28_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4499:4: ( ( () '[' ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4499:5: ( () '[' )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4499:5: ( () '[' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4499:6: () '['
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4499:6: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4500:1: 
        {
        }

        match(input,62,FOLLOW_62_in_synpred28_InternalMyDsl10435); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred28_InternalMyDsl

    // $ANTLR start synpred29_InternalMyDsl
    public final void synpred29_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4702:4: ( '<' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4702:6: '<'
        {
        match(input,44,FOLLOW_44_in_synpred29_InternalMyDsl11002); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred29_InternalMyDsl

    // $ANTLR start synpred30_InternalMyDsl
    public final void synpred30_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4751:5: ( '(' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4751:7: '('
        {
        match(input,28,FOLLOW_28_in_synpred30_InternalMyDsl11095); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred30_InternalMyDsl

    // $ANTLR start synpred31_InternalMyDsl
    public final void synpred31_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4756:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4756:5: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4756:5: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4756:6: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4756:6: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4757:1: 
        {
        }

        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4757:2: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
        int alt120=2;
        int LA120_0 = input.LA(1);

        if ( (LA120_0==RULE_ID||LA120_0==28||LA120_0==48) ) {
            alt120=1;
        }
        switch (alt120) {
            case 1 :
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4757:3: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                {
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4757:3: ( ( ruleJvmFormalParameter ) )
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4758:1: ( ruleJvmFormalParameter )
                {
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4758:1: ( ruleJvmFormalParameter )
                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4759:1: ruleJvmFormalParameter
                {
                pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred31_InternalMyDsl11125);
                ruleJvmFormalParameter();

                state._fsp--;
                if (state.failed) return ;

                }


                }

                // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4761:2: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                loop119:
                do {
                    int alt119=2;
                    int LA119_0 = input.LA(1);

                    if ( (LA119_0==29) ) {
                        alt119=1;
                    }


                    switch (alt119) {
                	case 1 :
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4761:4: ',' ( ( ruleJvmFormalParameter ) )
                	    {
                	    match(input,29,FOLLOW_29_in_synpred31_InternalMyDsl11132); if (state.failed) return ;
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4762:1: ( ( ruleJvmFormalParameter ) )
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4763:1: ( ruleJvmFormalParameter )
                	    {
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4763:1: ( ruleJvmFormalParameter )
                	    // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4764:1: ruleJvmFormalParameter
                	    {
                	    pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred31_InternalMyDsl11139);
                	    ruleJvmFormalParameter();

                	    state._fsp--;
                	    if (state.failed) return ;

                	    }


                	    }


                	    }
                	    break;

                	default :
                	    break loop119;
                    }
                } while (true);


                }
                break;

        }

        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4766:6: ( ( '|' ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4767:1: ( '|' )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4767:1: ( '|' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4768:2: '|'
        {
        match(input,64,FOLLOW_64_in_synpred31_InternalMyDsl11153); if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred31_InternalMyDsl

    // $ANTLR start synpred32_InternalMyDsl
    public final void synpred32_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4835:4: ( ( () '[' ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4835:5: ( () '[' )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4835:5: ( () '[' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4835:6: () '['
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4835:6: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:4836:1: 
        {
        }

        match(input,62,FOLLOW_62_in_synpred32_InternalMyDsl11273); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred32_InternalMyDsl

    // $ANTLR start synpred33_InternalMyDsl
    public final void synpred33_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5175:2: ( ( ruleXExpression ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5176:1: ( ruleXExpression )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5176:1: ( ruleXExpression )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5177:1: ruleXExpression
        {
        pushFollow(FOLLOW_ruleXExpression_in_synpred33_InternalMyDsl12097);
        ruleXExpression();

        state._fsp--;
        if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred33_InternalMyDsl

    // $ANTLR start synpred34_InternalMyDsl
    public final void synpred34_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5246:5: ( 'catch' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5246:7: 'catch'
        {
        match(input,89,FOLLOW_89_in_synpred34_InternalMyDsl12242); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred34_InternalMyDsl

    // $ANTLR start synpred35_InternalMyDsl
    public final void synpred35_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5265:5: ( 'finally' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5265:7: 'finally'
        {
        match(input,88,FOLLOW_88_in_synpred35_InternalMyDsl12272); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred35_InternalMyDsl

    // $ANTLR start synpred37_InternalMyDsl
    public final void synpred37_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5413:3: ( '.' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5414:2: '.'
        {
        match(input,17,FOLLOW_17_in_synpred37_InternalMyDsl12619); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred37_InternalMyDsl

    // $ANTLR start synpred38_InternalMyDsl
    public final void synpred38_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5537:2: ( ( () ruleArrayBrackets ) )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5537:3: ( () ruleArrayBrackets )
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5537:3: ( () ruleArrayBrackets )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5537:4: () ruleArrayBrackets
        {
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5537:4: ()
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5538:1: 
        {
        }

        pushFollow(FOLLOW_ruleArrayBrackets_in_synpred38_InternalMyDsl13002);
        ruleArrayBrackets();

        state._fsp--;
        if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred38_InternalMyDsl

    // $ANTLR start synpred39_InternalMyDsl
    public final void synpred39_InternalMyDsl_fragment() throws RecognitionException {   
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5722:4: ( '<' )
        // ../org.xtext.tp5.mydsl/src-gen/org/xtext/tp5/mydsl/parser/antlr/internal/InternalMyDsl.g:5722:6: '<'
        {
        match(input,44,FOLLOW_44_in_synpred39_InternalMyDsl13454); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred39_InternalMyDsl

    // Delegated rules

    public final boolean synpred10_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred10_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred8_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred8_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred39_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred39_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred22_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred22_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred26_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred26_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred7_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred7_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred30_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred30_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred16_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred16_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred20_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred20_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred9_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred9_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred25_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred25_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred28_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred28_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred17_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred17_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred32_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred32_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred29_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred29_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred14_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred14_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred2_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred2_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred15_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred15_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred11_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred11_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred33_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred33_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred12_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred12_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred18_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred18_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred35_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred35_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred23_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred23_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred6_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred6_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred4_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred4_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred3_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred3_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred27_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred27_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred38_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred38_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred37_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred37_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred34_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred34_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred31_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred31_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred1_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred1_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred24_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred24_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred13_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred13_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred5_InternalMyDsl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred5_InternalMyDsl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }


    protected DFA23 dfa23 = new DFA23(this);
    protected DFA26 dfa26 = new DFA26(this);
    protected DFA39 dfa39 = new DFA39(this);
    protected DFA38 dfa38 = new DFA38(this);
    protected DFA40 dfa40 = new DFA40(this);
    protected DFA42 dfa42 = new DFA42(this);
    protected DFA51 dfa51 = new DFA51(this);
    protected DFA75 dfa75 = new DFA75(this);
    protected DFA74 dfa74 = new DFA74(this);
    protected DFA76 dfa76 = new DFA76(this);
    protected DFA81 dfa81 = new DFA81(this);
    protected DFA84 dfa84 = new DFA84(this);
    protected DFA83 dfa83 = new DFA83(this);
    protected DFA85 dfa85 = new DFA85(this);
    protected DFA88 dfa88 = new DFA88(this);
    protected DFA103 dfa103 = new DFA103(this);
    protected DFA107 dfa107 = new DFA107(this);
    static final String DFA23_eotS =
        "\14\uffff";
    static final String DFA23_eofS =
        "\1\1\13\uffff";
    static final String DFA23_minS =
        "\1\4\1\uffff\11\0\1\uffff";
    static final String DFA23_maxS =
        "\1\131\1\uffff\11\0\1\uffff";
    static final String DFA23_acceptS =
        "\1\uffff\1\2\11\uffff\1\1";
    static final String DFA23_specialS =
        "\2\uffff\1\0\1\6\1\7\1\10\1\1\1\4\1\3\1\2\1\5\1\uffff}>";
    static final String[] DFA23_transitionS = {
            "\5\1\5\uffff\2\1\1\uffff\2\1\5\uffff\3\1\1\uffff\3\1\1\uffff"+
            "\13\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\14\1\1\uffff\16"+
            "\1\1\uffff\12\1",
            "",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            ""
    };

    static final short[] DFA23_eot = DFA.unpackEncodedString(DFA23_eotS);
    static final short[] DFA23_eof = DFA.unpackEncodedString(DFA23_eofS);
    static final char[] DFA23_min = DFA.unpackEncodedStringToUnsignedChars(DFA23_minS);
    static final char[] DFA23_max = DFA.unpackEncodedStringToUnsignedChars(DFA23_maxS);
    static final short[] DFA23_accept = DFA.unpackEncodedString(DFA23_acceptS);
    static final short[] DFA23_special = DFA.unpackEncodedString(DFA23_specialS);
    static final short[][] DFA23_transition;

    static {
        int numStates = DFA23_transitionS.length;
        DFA23_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA23_transition[i] = DFA.unpackEncodedString(DFA23_transitionS[i]);
        }
    }

    class DFA23 extends DFA {

        public DFA23(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 23;
            this.eot = DFA23_eot;
            this.eof = DFA23_eof;
            this.min = DFA23_min;
            this.max = DFA23_max;
            this.accept = DFA23_accept;
            this.special = DFA23_special;
            this.transition = DFA23_transition;
        }
        public String getDescription() {
            return "()* loopback of 1652:1: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA23_2 = input.LA(1);

                         
                        int index23_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_InternalMyDsl()) ) {s = 11;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index23_2);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA23_6 = input.LA(1);

                         
                        int index23_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_InternalMyDsl()) ) {s = 11;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index23_6);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA23_9 = input.LA(1);

                         
                        int index23_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_InternalMyDsl()) ) {s = 11;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index23_9);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA23_8 = input.LA(1);

                         
                        int index23_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_InternalMyDsl()) ) {s = 11;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index23_8);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA23_7 = input.LA(1);

                         
                        int index23_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_InternalMyDsl()) ) {s = 11;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index23_7);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA23_10 = input.LA(1);

                         
                        int index23_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_InternalMyDsl()) ) {s = 11;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index23_10);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA23_3 = input.LA(1);

                         
                        int index23_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_InternalMyDsl()) ) {s = 11;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index23_3);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA23_4 = input.LA(1);

                         
                        int index23_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_InternalMyDsl()) ) {s = 11;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index23_4);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA23_5 = input.LA(1);

                         
                        int index23_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_InternalMyDsl()) ) {s = 11;}

                        else if ( (true) ) {s = 1;}

                         
                        input.seek(index23_5);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 23, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA26_eotS =
        "\14\uffff";
    static final String DFA26_eofS =
        "\14\uffff";
    static final String DFA26_minS =
        "\1\53\2\uffff\1\53\10\uffff";
    static final String DFA26_maxS =
        "\1\63\2\uffff\1\57\10\uffff";
    static final String DFA26_acceptS =
        "\1\uffff\1\1\1\2\1\uffff\1\4\1\5\1\7\1\10\1\11\1\12\1\3\1\6";
    static final String DFA26_specialS =
        "\14\uffff}>";
    static final String[] DFA26_transitionS = {
            "\1\3\1\6\1\1\1\2\1\4\1\5\1\7\1\10\1\11",
            "",
            "",
            "\1\13\3\uffff\1\12",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA26_eot = DFA.unpackEncodedString(DFA26_eotS);
    static final short[] DFA26_eof = DFA.unpackEncodedString(DFA26_eofS);
    static final char[] DFA26_min = DFA.unpackEncodedStringToUnsignedChars(DFA26_minS);
    static final char[] DFA26_max = DFA.unpackEncodedStringToUnsignedChars(DFA26_maxS);
    static final short[] DFA26_accept = DFA.unpackEncodedString(DFA26_acceptS);
    static final short[] DFA26_special = DFA.unpackEncodedString(DFA26_specialS);
    static final short[][] DFA26_transition;

    static {
        int numStates = DFA26_transitionS.length;
        DFA26_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA26_transition[i] = DFA.unpackEncodedString(DFA26_transitionS[i]);
        }
    }

    class DFA26 extends DFA {

        public DFA26(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 26;
            this.eot = DFA26_eot;
            this.eof = DFA26_eof;
            this.min = DFA26_min;
            this.max = DFA26_max;
            this.accept = DFA26_accept;
            this.special = DFA26_special;
            this.transition = DFA26_transition;
        }
        public String getDescription() {
            return "1717:1: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' ) ) | kw= '<>' | kw= '?:' | kw= '<=>' )";
        }
    }
    static final String DFA39_eotS =
        "\112\uffff";
    static final String DFA39_eofS =
        "\1\2\111\uffff";
    static final String DFA39_minS =
        "\1\4\1\0\110\uffff";
    static final String DFA39_maxS =
        "\1\131\1\0\110\uffff";
    static final String DFA39_acceptS =
        "\2\uffff\1\2\106\uffff\1\1";
    static final String DFA39_specialS =
        "\1\uffff\1\0\110\uffff}>";
    static final String[] DFA39_transitionS = {
            "\5\2\5\uffff\2\2\1\uffff\2\2\5\uffff\3\2\1\uffff\1\1\2\2\1"+
            "\uffff\40\2\1\uffff\16\2\1\uffff\12\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA39_eot = DFA.unpackEncodedString(DFA39_eotS);
    static final short[] DFA39_eof = DFA.unpackEncodedString(DFA39_eofS);
    static final char[] DFA39_min = DFA.unpackEncodedStringToUnsignedChars(DFA39_minS);
    static final char[] DFA39_max = DFA.unpackEncodedStringToUnsignedChars(DFA39_maxS);
    static final short[] DFA39_accept = DFA.unpackEncodedString(DFA39_acceptS);
    static final short[] DFA39_special = DFA.unpackEncodedString(DFA39_specialS);
    static final short[][] DFA39_transition;

    static {
        int numStates = DFA39_transitionS.length;
        DFA39_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA39_transition[i] = DFA.unpackEncodedString(DFA39_transitionS[i]);
        }
    }

    class DFA39 extends DFA {

        public DFA39(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 39;
            this.eot = DFA39_eot;
            this.eof = DFA39_eof;
            this.min = DFA39_min;
            this.max = DFA39_max;
            this.accept = DFA39_accept;
            this.special = DFA39_special;
            this.transition = DFA39_transition;
        }
        public String getDescription() {
            return "2448:2: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA39_1 = input.LA(1);

                         
                        int index39_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred15_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index39_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 39, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA38_eotS =
        "\43\uffff";
    static final String DFA38_eofS =
        "\43\uffff";
    static final String DFA38_minS =
        "\1\4\2\0\40\uffff";
    static final String DFA38_maxS =
        "\1\127\2\0\40\uffff";
    static final String DFA38_acceptS =
        "\3\uffff\2\1\1\2\34\uffff\1\3";
    static final String DFA38_specialS =
        "\1\0\1\1\1\2\40\uffff}>";
    static final String[] DFA38_transitionS = {
            "\1\1\4\5\5\uffff\1\5\15\uffff\1\2\1\uffff\1\42\15\uffff\1\5"+
            "\3\uffff\1\3\3\uffff\2\5\3\uffff\1\5\3\uffff\2\5\1\uffff\1\4"+
            "\1\uffff\1\5\1\uffff\1\5\2\uffff\10\5\1\uffff\10\5",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA38_eot = DFA.unpackEncodedString(DFA38_eotS);
    static final short[] DFA38_eof = DFA.unpackEncodedString(DFA38_eofS);
    static final char[] DFA38_min = DFA.unpackEncodedStringToUnsignedChars(DFA38_minS);
    static final char[] DFA38_max = DFA.unpackEncodedStringToUnsignedChars(DFA38_maxS);
    static final short[] DFA38_accept = DFA.unpackEncodedString(DFA38_acceptS);
    static final short[] DFA38_special = DFA.unpackEncodedString(DFA38_specialS);
    static final short[][] DFA38_transition;

    static {
        int numStates = DFA38_transitionS.length;
        DFA38_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA38_transition[i] = DFA.unpackEncodedString(DFA38_transitionS[i]);
        }
    }

    class DFA38 extends DFA {

        public DFA38(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 38;
            this.eot = DFA38_eot;
            this.eof = DFA38_eof;
            this.min = DFA38_min;
            this.max = DFA38_max;
            this.accept = DFA38_accept;
            this.special = DFA38_special;
            this.transition = DFA38_transition;
        }
        public String getDescription() {
            return "2469:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA38_0 = input.LA(1);

                         
                        int index38_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA38_0==RULE_ID) ) {s = 1;}

                        else if ( (LA38_0==28) ) {s = 2;}

                        else if ( (LA38_0==48) && (synpred16_InternalMyDsl())) {s = 3;}

                        else if ( (LA38_0==64) && (synpred16_InternalMyDsl())) {s = 4;}

                        else if ( ((LA38_0>=RULE_STRING && LA38_0<=RULE_DECIMAL)||LA38_0==14||LA38_0==44||(LA38_0>=52 && LA38_0<=53)||LA38_0==57||(LA38_0>=61 && LA38_0<=62)||LA38_0==66||LA38_0==68||(LA38_0>=71 && LA38_0<=78)||(LA38_0>=80 && LA38_0<=87)) ) {s = 5;}

                        else if ( (LA38_0==30) ) {s = 34;}

                         
                        input.seek(index38_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA38_1 = input.LA(1);

                         
                        int index38_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalMyDsl()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index38_1);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA38_2 = input.LA(1);

                         
                        int index38_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred16_InternalMyDsl()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index38_2);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 38, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA40_eotS =
        "\112\uffff";
    static final String DFA40_eofS =
        "\1\2\111\uffff";
    static final String DFA40_minS =
        "\1\4\1\0\110\uffff";
    static final String DFA40_maxS =
        "\1\131\1\0\110\uffff";
    static final String DFA40_acceptS =
        "\2\uffff\1\2\106\uffff\1\1";
    static final String DFA40_specialS =
        "\1\uffff\1\0\110\uffff}>";
    static final String[] DFA40_transitionS = {
            "\5\2\5\uffff\2\2\1\uffff\2\2\5\uffff\3\2\1\uffff\3\2\1\uffff"+
            "\36\2\1\1\1\2\1\uffff\16\2\1\uffff\12\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA40_eot = DFA.unpackEncodedString(DFA40_eotS);
    static final short[] DFA40_eof = DFA.unpackEncodedString(DFA40_eofS);
    static final char[] DFA40_min = DFA.unpackEncodedStringToUnsignedChars(DFA40_minS);
    static final char[] DFA40_max = DFA.unpackEncodedStringToUnsignedChars(DFA40_maxS);
    static final short[] DFA40_accept = DFA.unpackEncodedString(DFA40_acceptS);
    static final short[] DFA40_special = DFA.unpackEncodedString(DFA40_specialS);
    static final short[][] DFA40_transition;

    static {
        int numStates = DFA40_transitionS.length;
        DFA40_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA40_transition[i] = DFA.unpackEncodedString(DFA40_transitionS[i]);
        }
    }

    class DFA40 extends DFA {

        public DFA40(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 40;
            this.eot = DFA40_eot;
            this.eof = DFA40_eof;
            this.min = DFA40_min;
            this.max = DFA40_max;
            this.accept = DFA40_accept;
            this.special = DFA40_special;
            this.transition = DFA40_transition;
        }
        public String getDescription() {
            return "2548:3: ( ( ( () '[' ) )=> (lv_memberCallArguments_22_0= ruleXClosure ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA40_1 = input.LA(1);

                         
                        int index40_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred17_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index40_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 40, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA42_eotS =
        "\16\uffff";
    static final String DFA42_eofS =
        "\16\uffff";
    static final String DFA42_minS =
        "\1\4\15\uffff";
    static final String DFA42_maxS =
        "\1\127\15\uffff";
    static final String DFA42_acceptS =
        "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1"+
        "\15";
    static final String DFA42_specialS =
        "\16\uffff}>";
    static final String[] DFA42_transitionS = {
            "\1\4\4\5\5\uffff\1\2\15\uffff\1\15\17\uffff\1\4\20\uffff\2"+
            "\5\3\uffff\1\6\1\uffff\1\3\2\uffff\1\7\1\10\1\11\5\4\1\uffff"+
            "\1\1\4\5\1\12\1\13\1\14",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA42_eot = DFA.unpackEncodedString(DFA42_eotS);
    static final short[] DFA42_eof = DFA.unpackEncodedString(DFA42_eofS);
    static final char[] DFA42_min = DFA.unpackEncodedStringToUnsignedChars(DFA42_minS);
    static final char[] DFA42_max = DFA.unpackEncodedStringToUnsignedChars(DFA42_maxS);
    static final short[] DFA42_accept = DFA.unpackEncodedString(DFA42_acceptS);
    static final short[] DFA42_special = DFA.unpackEncodedString(DFA42_specialS);
    static final short[][] DFA42_transition;

    static {
        int numStates = DFA42_transitionS.length;
        DFA42_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA42_transition[i] = DFA.unpackEncodedString(DFA42_transitionS[i]);
        }
    }

    class DFA42 extends DFA {

        public DFA42(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 42;
            this.eot = DFA42_eot;
            this.eof = DFA42_eof;
            this.min = DFA42_min;
            this.max = DFA42_max;
            this.accept = DFA42_accept;
            this.special = DFA42_special;
            this.transition = DFA42_transition;
        }
        public String getDescription() {
            return "2589:1: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | this_XFeatureCall_3= ruleXFeatureCall | this_XLiteral_4= ruleXLiteral | this_XIfExpression_5= ruleXIfExpression | this_XForLoopExpression_6= ruleXForLoopExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XDoWhileExpression_8= ruleXDoWhileExpression | this_XThrowExpression_9= ruleXThrowExpression | this_XReturnExpression_10= ruleXReturnExpression | this_XTryCatchFinallyExpression_11= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_12= ruleXParenthesizedExpression )";
        }
    }
    static final String DFA51_eotS =
        "\45\uffff";
    static final String DFA51_eofS =
        "\45\uffff";
    static final String DFA51_minS =
        "\1\4\2\0\42\uffff";
    static final String DFA51_maxS =
        "\1\127\2\0\42\uffff";
    static final String DFA51_acceptS =
        "\3\uffff\2\1\1\2\37\uffff";
    static final String DFA51_specialS =
        "\1\0\1\1\1\2\42\uffff}>";
    static final String[] DFA51_transitionS = {
            "\1\1\4\5\5\uffff\1\5\11\uffff\1\5\1\uffff\1\5\1\uffff\1\2\17"+
            "\uffff\1\5\3\uffff\1\3\3\uffff\2\5\3\uffff\1\5\3\uffff\3\5\1"+
            "\4\1\uffff\1\5\1\uffff\1\5\2\uffff\10\5\1\uffff\10\5",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA51_eot = DFA.unpackEncodedString(DFA51_eotS);
    static final short[] DFA51_eof = DFA.unpackEncodedString(DFA51_eofS);
    static final char[] DFA51_min = DFA.unpackEncodedStringToUnsignedChars(DFA51_minS);
    static final char[] DFA51_max = DFA.unpackEncodedStringToUnsignedChars(DFA51_maxS);
    static final short[] DFA51_accept = DFA.unpackEncodedString(DFA51_acceptS);
    static final short[] DFA51_special = DFA.unpackEncodedString(DFA51_specialS);
    static final short[][] DFA51_transition;

    static {
        int numStates = DFA51_transitionS.length;
        DFA51_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA51_transition[i] = DFA.unpackEncodedString(DFA51_transitionS[i]);
        }
    }

    class DFA51 extends DFA {

        public DFA51(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 51;
            this.eot = DFA51_eot;
            this.eof = DFA51_eof;
            this.min = DFA51_min;
            this.max = DFA51_max;
            this.accept = DFA51_accept;
            this.special = DFA51_special;
            this.transition = DFA51_transition;
        }
        public String getDescription() {
            return "3041:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA51_0 = input.LA(1);

                         
                        int index51_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA51_0==RULE_ID) ) {s = 1;}

                        else if ( (LA51_0==28) ) {s = 2;}

                        else if ( (LA51_0==48) && (synpred20_InternalMyDsl())) {s = 3;}

                        else if ( (LA51_0==64) && (synpred20_InternalMyDsl())) {s = 4;}

                        else if ( ((LA51_0>=RULE_STRING && LA51_0<=RULE_DECIMAL)||LA51_0==14||LA51_0==24||LA51_0==26||LA51_0==44||(LA51_0>=52 && LA51_0<=53)||LA51_0==57||(LA51_0>=61 && LA51_0<=63)||LA51_0==66||LA51_0==68||(LA51_0>=71 && LA51_0<=78)||(LA51_0>=80 && LA51_0<=87)) ) {s = 5;}

                         
                        input.seek(index51_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA51_1 = input.LA(1);

                         
                        int index51_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred20_InternalMyDsl()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index51_1);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA51_2 = input.LA(1);

                         
                        int index51_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred20_InternalMyDsl()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index51_2);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 51, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA75_eotS =
        "\112\uffff";
    static final String DFA75_eofS =
        "\1\2\111\uffff";
    static final String DFA75_minS =
        "\1\4\1\0\110\uffff";
    static final String DFA75_maxS =
        "\1\131\1\0\110\uffff";
    static final String DFA75_acceptS =
        "\2\uffff\1\2\106\uffff\1\1";
    static final String DFA75_specialS =
        "\1\uffff\1\0\110\uffff}>";
    static final String[] DFA75_transitionS = {
            "\5\2\5\uffff\2\2\1\uffff\2\2\5\uffff\3\2\1\uffff\1\1\2\2\1"+
            "\uffff\40\2\1\uffff\16\2\1\uffff\12\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA75_eot = DFA.unpackEncodedString(DFA75_eotS);
    static final short[] DFA75_eof = DFA.unpackEncodedString(DFA75_eofS);
    static final char[] DFA75_min = DFA.unpackEncodedStringToUnsignedChars(DFA75_minS);
    static final char[] DFA75_max = DFA.unpackEncodedStringToUnsignedChars(DFA75_maxS);
    static final short[] DFA75_accept = DFA.unpackEncodedString(DFA75_acceptS);
    static final short[] DFA75_special = DFA.unpackEncodedString(DFA75_specialS);
    static final short[][] DFA75_transition;

    static {
        int numStates = DFA75_transitionS.length;
        DFA75_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA75_transition[i] = DFA.unpackEncodedString(DFA75_transitionS[i]);
        }
    }

    class DFA75 extends DFA {

        public DFA75(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 75;
            this.eot = DFA75_eot;
            this.eof = DFA75_eof;
            this.min = DFA75_min;
            this.max = DFA75_max;
            this.accept = DFA75_accept;
            this.special = DFA75_special;
            this.transition = DFA75_transition;
        }
        public String getDescription() {
            return "4399:2: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA75_1 = input.LA(1);

                         
                        int index75_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred26_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index75_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 75, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA74_eotS =
        "\43\uffff";
    static final String DFA74_eofS =
        "\43\uffff";
    static final String DFA74_minS =
        "\1\4\2\0\40\uffff";
    static final String DFA74_maxS =
        "\1\127\2\0\40\uffff";
    static final String DFA74_acceptS =
        "\3\uffff\2\1\1\2\34\uffff\1\3";
    static final String DFA74_specialS =
        "\1\0\1\1\1\2\40\uffff}>";
    static final String[] DFA74_transitionS = {
            "\1\1\4\5\5\uffff\1\5\15\uffff\1\2\1\uffff\1\42\15\uffff\1\5"+
            "\3\uffff\1\3\3\uffff\2\5\3\uffff\1\5\3\uffff\2\5\1\uffff\1\4"+
            "\1\uffff\1\5\1\uffff\1\5\2\uffff\10\5\1\uffff\10\5",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA74_eot = DFA.unpackEncodedString(DFA74_eotS);
    static final short[] DFA74_eof = DFA.unpackEncodedString(DFA74_eofS);
    static final char[] DFA74_min = DFA.unpackEncodedStringToUnsignedChars(DFA74_minS);
    static final char[] DFA74_max = DFA.unpackEncodedStringToUnsignedChars(DFA74_maxS);
    static final short[] DFA74_accept = DFA.unpackEncodedString(DFA74_acceptS);
    static final short[] DFA74_special = DFA.unpackEncodedString(DFA74_specialS);
    static final short[][] DFA74_transition;

    static {
        int numStates = DFA74_transitionS.length;
        DFA74_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA74_transition[i] = DFA.unpackEncodedString(DFA74_transitionS[i]);
        }
    }

    class DFA74 extends DFA {

        public DFA74(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 74;
            this.eot = DFA74_eot;
            this.eof = DFA74_eof;
            this.min = DFA74_min;
            this.max = DFA74_max;
            this.accept = DFA74_accept;
            this.special = DFA74_special;
            this.transition = DFA74_transition;
        }
        public String getDescription() {
            return "4420:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA74_0 = input.LA(1);

                         
                        int index74_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA74_0==RULE_ID) ) {s = 1;}

                        else if ( (LA74_0==28) ) {s = 2;}

                        else if ( (LA74_0==48) && (synpred27_InternalMyDsl())) {s = 3;}

                        else if ( (LA74_0==64) && (synpred27_InternalMyDsl())) {s = 4;}

                        else if ( ((LA74_0>=RULE_STRING && LA74_0<=RULE_DECIMAL)||LA74_0==14||LA74_0==44||(LA74_0>=52 && LA74_0<=53)||LA74_0==57||(LA74_0>=61 && LA74_0<=62)||LA74_0==66||LA74_0==68||(LA74_0>=71 && LA74_0<=78)||(LA74_0>=80 && LA74_0<=87)) ) {s = 5;}

                        else if ( (LA74_0==30) ) {s = 34;}

                         
                        input.seek(index74_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA74_1 = input.LA(1);

                         
                        int index74_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred27_InternalMyDsl()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index74_1);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA74_2 = input.LA(1);

                         
                        int index74_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred27_InternalMyDsl()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index74_2);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 74, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA76_eotS =
        "\112\uffff";
    static final String DFA76_eofS =
        "\1\2\111\uffff";
    static final String DFA76_minS =
        "\1\4\1\0\110\uffff";
    static final String DFA76_maxS =
        "\1\131\1\0\110\uffff";
    static final String DFA76_acceptS =
        "\2\uffff\1\2\106\uffff\1\1";
    static final String DFA76_specialS =
        "\1\uffff\1\0\110\uffff}>";
    static final String[] DFA76_transitionS = {
            "\5\2\5\uffff\2\2\1\uffff\2\2\5\uffff\3\2\1\uffff\3\2\1\uffff"+
            "\36\2\1\1\1\2\1\uffff\16\2\1\uffff\12\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA76_eot = DFA.unpackEncodedString(DFA76_eotS);
    static final short[] DFA76_eof = DFA.unpackEncodedString(DFA76_eofS);
    static final char[] DFA76_min = DFA.unpackEncodedStringToUnsignedChars(DFA76_minS);
    static final char[] DFA76_max = DFA.unpackEncodedStringToUnsignedChars(DFA76_maxS);
    static final short[] DFA76_accept = DFA.unpackEncodedString(DFA76_acceptS);
    static final short[] DFA76_special = DFA.unpackEncodedString(DFA76_specialS);
    static final short[][] DFA76_transition;

    static {
        int numStates = DFA76_transitionS.length;
        DFA76_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA76_transition[i] = DFA.unpackEncodedString(DFA76_transitionS[i]);
        }
    }

    class DFA76 extends DFA {

        public DFA76(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 76;
            this.eot = DFA76_eot;
            this.eof = DFA76_eof;
            this.min = DFA76_min;
            this.max = DFA76_max;
            this.accept = DFA76_accept;
            this.special = DFA76_special;
            this.transition = DFA76_transition;
        }
        public String getDescription() {
            return "4499:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_14_0= ruleXClosure ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA76_1 = input.LA(1);

                         
                        int index76_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred28_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index76_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 76, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA81_eotS =
        "\112\uffff";
    static final String DFA81_eofS =
        "\1\2\111\uffff";
    static final String DFA81_minS =
        "\1\4\1\0\110\uffff";
    static final String DFA81_maxS =
        "\1\131\1\0\110\uffff";
    static final String DFA81_acceptS =
        "\2\uffff\1\2\106\uffff\1\1";
    static final String DFA81_specialS =
        "\1\uffff\1\0\110\uffff}>";
    static final String[] DFA81_transitionS = {
            "\5\2\5\uffff\2\2\1\uffff\2\2\5\uffff\3\2\1\uffff\3\2\1\uffff"+
            "\14\2\1\1\23\2\1\uffff\16\2\1\uffff\12\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA81_eot = DFA.unpackEncodedString(DFA81_eotS);
    static final short[] DFA81_eof = DFA.unpackEncodedString(DFA81_eofS);
    static final char[] DFA81_min = DFA.unpackEncodedStringToUnsignedChars(DFA81_minS);
    static final char[] DFA81_max = DFA.unpackEncodedStringToUnsignedChars(DFA81_maxS);
    static final short[] DFA81_accept = DFA.unpackEncodedString(DFA81_acceptS);
    static final short[] DFA81_special = DFA.unpackEncodedString(DFA81_specialS);
    static final short[][] DFA81_transition;

    static {
        int numStates = DFA81_transitionS.length;
        DFA81_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA81_transition[i] = DFA.unpackEncodedString(DFA81_transitionS[i]);
        }
    }

    class DFA81 extends DFA {

        public DFA81(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 81;
            this.eot = DFA81_eot;
            this.eof = DFA81_eof;
            this.min = DFA81_min;
            this.max = DFA81_max;
            this.accept = DFA81_accept;
            this.special = DFA81_special;
            this.transition = DFA81_transition;
        }
        public String getDescription() {
            return "4702:2: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA81_1 = input.LA(1);

                         
                        int index81_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred29_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index81_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 81, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA84_eotS =
        "\112\uffff";
    static final String DFA84_eofS =
        "\1\2\111\uffff";
    static final String DFA84_minS =
        "\1\4\1\0\110\uffff";
    static final String DFA84_maxS =
        "\1\131\1\0\110\uffff";
    static final String DFA84_acceptS =
        "\2\uffff\1\2\106\uffff\1\1";
    static final String DFA84_specialS =
        "\1\uffff\1\0\110\uffff}>";
    static final String[] DFA84_transitionS = {
            "\5\2\5\uffff\2\2\1\uffff\2\2\5\uffff\3\2\1\uffff\1\1\2\2\1"+
            "\uffff\40\2\1\uffff\16\2\1\uffff\12\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA84_eot = DFA.unpackEncodedString(DFA84_eotS);
    static final short[] DFA84_eof = DFA.unpackEncodedString(DFA84_eofS);
    static final char[] DFA84_min = DFA.unpackEncodedStringToUnsignedChars(DFA84_minS);
    static final char[] DFA84_max = DFA.unpackEncodedStringToUnsignedChars(DFA84_maxS);
    static final short[] DFA84_accept = DFA.unpackEncodedString(DFA84_acceptS);
    static final short[] DFA84_special = DFA.unpackEncodedString(DFA84_specialS);
    static final short[][] DFA84_transition;

    static {
        int numStates = DFA84_transitionS.length;
        DFA84_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA84_transition[i] = DFA.unpackEncodedString(DFA84_transitionS[i]);
        }
    }

    class DFA84 extends DFA {

        public DFA84(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 84;
            this.eot = DFA84_eot;
            this.eof = DFA84_eof;
            this.min = DFA84_min;
            this.max = DFA84_max;
            this.accept = DFA84_accept;
            this.special = DFA84_special;
            this.transition = DFA84_transition;
        }
        public String getDescription() {
            return "4751:3: ( ( ( '(' )=>otherlv_8= '(' ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA84_1 = input.LA(1);

                         
                        int index84_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred30_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index84_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 84, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA83_eotS =
        "\43\uffff";
    static final String DFA83_eofS =
        "\43\uffff";
    static final String DFA83_minS =
        "\1\4\2\0\40\uffff";
    static final String DFA83_maxS =
        "\1\127\2\0\40\uffff";
    static final String DFA83_acceptS =
        "\3\uffff\2\1\1\2\34\uffff\1\3";
    static final String DFA83_specialS =
        "\1\0\1\1\1\2\40\uffff}>";
    static final String[] DFA83_transitionS = {
            "\1\1\4\5\5\uffff\1\5\15\uffff\1\2\1\uffff\1\42\15\uffff\1\5"+
            "\3\uffff\1\3\3\uffff\2\5\3\uffff\1\5\3\uffff\2\5\1\uffff\1\4"+
            "\1\uffff\1\5\1\uffff\1\5\2\uffff\10\5\1\uffff\10\5",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA83_eot = DFA.unpackEncodedString(DFA83_eotS);
    static final short[] DFA83_eof = DFA.unpackEncodedString(DFA83_eofS);
    static final char[] DFA83_min = DFA.unpackEncodedStringToUnsignedChars(DFA83_minS);
    static final char[] DFA83_max = DFA.unpackEncodedStringToUnsignedChars(DFA83_maxS);
    static final short[] DFA83_accept = DFA.unpackEncodedString(DFA83_acceptS);
    static final short[] DFA83_special = DFA.unpackEncodedString(DFA83_specialS);
    static final short[][] DFA83_transition;

    static {
        int numStates = DFA83_transitionS.length;
        DFA83_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA83_transition[i] = DFA.unpackEncodedString(DFA83_transitionS[i]);
        }
    }

    class DFA83 extends DFA {

        public DFA83(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 83;
            this.eot = DFA83_eot;
            this.eof = DFA83_eof;
            this.min = DFA83_min;
            this.max = DFA83_max;
            this.accept = DFA83_accept;
            this.special = DFA83_special;
            this.transition = DFA83_transition;
        }
        public String getDescription() {
            return "4756:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA83_0 = input.LA(1);

                         
                        int index83_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA83_0==RULE_ID) ) {s = 1;}

                        else if ( (LA83_0==28) ) {s = 2;}

                        else if ( (LA83_0==48) && (synpred31_InternalMyDsl())) {s = 3;}

                        else if ( (LA83_0==64) && (synpred31_InternalMyDsl())) {s = 4;}

                        else if ( ((LA83_0>=RULE_STRING && LA83_0<=RULE_DECIMAL)||LA83_0==14||LA83_0==44||(LA83_0>=52 && LA83_0<=53)||LA83_0==57||(LA83_0>=61 && LA83_0<=62)||LA83_0==66||LA83_0==68||(LA83_0>=71 && LA83_0<=78)||(LA83_0>=80 && LA83_0<=87)) ) {s = 5;}

                        else if ( (LA83_0==30) ) {s = 34;}

                         
                        input.seek(index83_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA83_1 = input.LA(1);

                         
                        int index83_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred31_InternalMyDsl()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index83_1);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA83_2 = input.LA(1);

                         
                        int index83_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred31_InternalMyDsl()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index83_2);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 83, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA85_eotS =
        "\112\uffff";
    static final String DFA85_eofS =
        "\1\2\111\uffff";
    static final String DFA85_minS =
        "\1\4\1\0\110\uffff";
    static final String DFA85_maxS =
        "\1\131\1\0\110\uffff";
    static final String DFA85_acceptS =
        "\2\uffff\1\2\106\uffff\1\1";
    static final String DFA85_specialS =
        "\1\uffff\1\0\110\uffff}>";
    static final String[] DFA85_transitionS = {
            "\5\2\5\uffff\2\2\1\uffff\2\2\5\uffff\3\2\1\uffff\3\2\1\uffff"+
            "\36\2\1\1\1\2\1\uffff\16\2\1\uffff\12\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA85_eot = DFA.unpackEncodedString(DFA85_eotS);
    static final short[] DFA85_eof = DFA.unpackEncodedString(DFA85_eofS);
    static final char[] DFA85_min = DFA.unpackEncodedStringToUnsignedChars(DFA85_minS);
    static final char[] DFA85_max = DFA.unpackEncodedStringToUnsignedChars(DFA85_maxS);
    static final short[] DFA85_accept = DFA.unpackEncodedString(DFA85_acceptS);
    static final short[] DFA85_special = DFA.unpackEncodedString(DFA85_specialS);
    static final short[][] DFA85_transition;

    static {
        int numStates = DFA85_transitionS.length;
        DFA85_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA85_transition[i] = DFA.unpackEncodedString(DFA85_transitionS[i]);
        }
    }

    class DFA85 extends DFA {

        public DFA85(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 85;
            this.eot = DFA85_eot;
            this.eof = DFA85_eof;
            this.min = DFA85_min;
            this.max = DFA85_max;
            this.accept = DFA85_accept;
            this.special = DFA85_special;
            this.transition = DFA85_transition;
        }
        public String getDescription() {
            return "4835:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA85_1 = input.LA(1);

                         
                        int index85_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred32_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index85_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 85, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA88_eotS =
        "\112\uffff";
    static final String DFA88_eofS =
        "\1\40\111\uffff";
    static final String DFA88_minS =
        "\1\4\37\0\52\uffff";
    static final String DFA88_maxS =
        "\1\131\37\0\52\uffff";
    static final String DFA88_acceptS =
        "\40\uffff\1\2\50\uffff\1\1";
    static final String DFA88_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+
        "\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30"+
        "\1\31\1\32\1\33\1\34\1\35\1\36\52\uffff}>";
    static final String[] DFA88_transitionS = {
            "\1\1\1\26\1\22\1\23\1\24\5\uffff\1\12\1\40\1\uffff\2\40\5\uffff"+
            "\3\40\1\uffff\1\37\2\40\1\uffff\14\40\1\14\7\40\1\10\1\7\3\40"+
            "\1\6\3\40\1\16\1\17\1\40\1\uffff\1\40\1\30\1\40\1\13\2\40\1"+
            "\31\1\32\1\33\1\2\1\3\1\4\1\5\1\15\1\uffff\1\11\1\20\1\21\1"+
            "\25\1\27\1\34\1\35\1\36\2\40",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA88_eot = DFA.unpackEncodedString(DFA88_eotS);
    static final short[] DFA88_eof = DFA.unpackEncodedString(DFA88_eofS);
    static final char[] DFA88_min = DFA.unpackEncodedStringToUnsignedChars(DFA88_minS);
    static final char[] DFA88_max = DFA.unpackEncodedStringToUnsignedChars(DFA88_maxS);
    static final short[] DFA88_accept = DFA.unpackEncodedString(DFA88_acceptS);
    static final short[] DFA88_special = DFA.unpackEncodedString(DFA88_specialS);
    static final short[][] DFA88_transition;

    static {
        int numStates = DFA88_transitionS.length;
        DFA88_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA88_transition[i] = DFA.unpackEncodedString(DFA88_transitionS[i]);
        }
    }

    class DFA88 extends DFA {

        public DFA88(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 88;
            this.eot = DFA88_eot;
            this.eof = DFA88_eof;
            this.min = DFA88_min;
            this.max = DFA88_max;
            this.accept = DFA88_accept;
            this.special = DFA88_special;
            this.transition = DFA88_transition;
        }
        public String getDescription() {
            return "5175:1: ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA88_1 = input.LA(1);

                         
                        int index88_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA88_2 = input.LA(1);

                         
                        int index88_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA88_3 = input.LA(1);

                         
                        int index88_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA88_4 = input.LA(1);

                         
                        int index88_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA88_5 = input.LA(1);

                         
                        int index88_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA88_6 = input.LA(1);

                         
                        int index88_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA88_7 = input.LA(1);

                         
                        int index88_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA88_8 = input.LA(1);

                         
                        int index88_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA88_9 = input.LA(1);

                         
                        int index88_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA88_10 = input.LA(1);

                         
                        int index88_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA88_11 = input.LA(1);

                         
                        int index88_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA88_12 = input.LA(1);

                         
                        int index88_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_12);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA88_13 = input.LA(1);

                         
                        int index88_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_13);
                        if ( s>=0 ) return s;
                        break;
                    case 13 : 
                        int LA88_14 = input.LA(1);

                         
                        int index88_14 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_14);
                        if ( s>=0 ) return s;
                        break;
                    case 14 : 
                        int LA88_15 = input.LA(1);

                         
                        int index88_15 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_15);
                        if ( s>=0 ) return s;
                        break;
                    case 15 : 
                        int LA88_16 = input.LA(1);

                         
                        int index88_16 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_16);
                        if ( s>=0 ) return s;
                        break;
                    case 16 : 
                        int LA88_17 = input.LA(1);

                         
                        int index88_17 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_17);
                        if ( s>=0 ) return s;
                        break;
                    case 17 : 
                        int LA88_18 = input.LA(1);

                         
                        int index88_18 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_18);
                        if ( s>=0 ) return s;
                        break;
                    case 18 : 
                        int LA88_19 = input.LA(1);

                         
                        int index88_19 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_19);
                        if ( s>=0 ) return s;
                        break;
                    case 19 : 
                        int LA88_20 = input.LA(1);

                         
                        int index88_20 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_20);
                        if ( s>=0 ) return s;
                        break;
                    case 20 : 
                        int LA88_21 = input.LA(1);

                         
                        int index88_21 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_21);
                        if ( s>=0 ) return s;
                        break;
                    case 21 : 
                        int LA88_22 = input.LA(1);

                         
                        int index88_22 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_22);
                        if ( s>=0 ) return s;
                        break;
                    case 22 : 
                        int LA88_23 = input.LA(1);

                         
                        int index88_23 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_23);
                        if ( s>=0 ) return s;
                        break;
                    case 23 : 
                        int LA88_24 = input.LA(1);

                         
                        int index88_24 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_24);
                        if ( s>=0 ) return s;
                        break;
                    case 24 : 
                        int LA88_25 = input.LA(1);

                         
                        int index88_25 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_25);
                        if ( s>=0 ) return s;
                        break;
                    case 25 : 
                        int LA88_26 = input.LA(1);

                         
                        int index88_26 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_26);
                        if ( s>=0 ) return s;
                        break;
                    case 26 : 
                        int LA88_27 = input.LA(1);

                         
                        int index88_27 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_27);
                        if ( s>=0 ) return s;
                        break;
                    case 27 : 
                        int LA88_28 = input.LA(1);

                         
                        int index88_28 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_28);
                        if ( s>=0 ) return s;
                        break;
                    case 28 : 
                        int LA88_29 = input.LA(1);

                         
                        int index88_29 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_29);
                        if ( s>=0 ) return s;
                        break;
                    case 29 : 
                        int LA88_30 = input.LA(1);

                         
                        int index88_30 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_30);
                        if ( s>=0 ) return s;
                        break;
                    case 30 : 
                        int LA88_31 = input.LA(1);

                         
                        int index88_31 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred33_InternalMyDsl()) ) {s = 73;}

                        else if ( (true) ) {s = 32;}

                         
                        input.seek(index88_31);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 88, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA103_eotS =
        "\117\uffff";
    static final String DFA103_eofS =
        "\1\2\116\uffff";
    static final String DFA103_minS =
        "\1\4\1\0\115\uffff";
    static final String DFA103_maxS =
        "\1\136\1\0\115\uffff";
    static final String DFA103_acceptS =
        "\2\uffff\1\2\113\uffff\1\1";
    static final String DFA103_specialS =
        "\1\uffff\1\0\115\uffff}>";
    static final String[] DFA103_transitionS = {
            "\5\2\5\uffff\2\2\1\uffff\2\2\3\uffff\5\2\1\uffff\3\2\1\uffff"+
            "\14\2\1\1\23\2\1\uffff\16\2\1\uffff\12\2\2\uffff\3\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA103_eot = DFA.unpackEncodedString(DFA103_eotS);
    static final short[] DFA103_eof = DFA.unpackEncodedString(DFA103_eofS);
    static final char[] DFA103_min = DFA.unpackEncodedStringToUnsignedChars(DFA103_minS);
    static final char[] DFA103_max = DFA.unpackEncodedStringToUnsignedChars(DFA103_maxS);
    static final short[] DFA103_accept = DFA.unpackEncodedString(DFA103_acceptS);
    static final short[] DFA103_special = DFA.unpackEncodedString(DFA103_specialS);
    static final short[][] DFA103_transition;

    static {
        int numStates = DFA103_transitionS.length;
        DFA103_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA103_transition[i] = DFA.unpackEncodedString(DFA103_transitionS[i]);
        }
    }

    class DFA103 extends DFA {

        public DFA103(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 103;
            this.eot = DFA103_eot;
            this.eof = DFA103_eof;
            this.min = DFA103_min;
            this.max = DFA103_max;
            this.accept = DFA103_accept;
            this.special = DFA103_special;
            this.transition = DFA103_transition;
        }
        public String getDescription() {
            return "5722:2: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA103_1 = input.LA(1);

                         
                        int index103_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred39_InternalMyDsl()) ) {s = 78;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index103_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 103, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA107_eotS =
        "\7\uffff";
    static final String DFA107_eofS =
        "\2\uffff\1\4\3\uffff\1\4";
    static final String DFA107_minS =
        "\1\4\1\uffff\1\21\1\4\2\uffff\1\21";
    static final String DFA107_maxS =
        "\1\113\1\uffff\1\101\1\22\2\uffff\1\101";
    static final String DFA107_acceptS =
        "\1\uffff\1\1\2\uffff\1\2\1\3\1\uffff";
    static final String DFA107_specialS =
        "\7\uffff}>";
    static final String[] DFA107_transitionS = {
            "\1\2\106\uffff\1\1",
            "",
            "\1\3\57\uffff\1\4",
            "\1\6\15\uffff\1\5",
            "",
            "",
            "\1\3\57\uffff\1\4"
    };

    static final short[] DFA107_eot = DFA.unpackEncodedString(DFA107_eotS);
    static final short[] DFA107_eof = DFA.unpackEncodedString(DFA107_eofS);
    static final char[] DFA107_min = DFA.unpackEncodedStringToUnsignedChars(DFA107_minS);
    static final char[] DFA107_max = DFA.unpackEncodedStringToUnsignedChars(DFA107_maxS);
    static final short[] DFA107_accept = DFA.unpackEncodedString(DFA107_acceptS);
    static final short[] DFA107_special = DFA.unpackEncodedString(DFA107_specialS);
    static final short[][] DFA107_transition;

    static {
        int numStates = DFA107_transitionS.length;
        DFA107_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA107_transition[i] = DFA.unpackEncodedString(DFA107_transitionS[i]);
        }
    }

    class DFA107 extends DFA {

        public DFA107(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 107;
            this.eot = DFA107_eot;
            this.eof = DFA107_eof;
            this.min = DFA107_min;
            this.max = DFA107_max;
            this.accept = DFA107_accept;
            this.special = DFA107_special;
            this.transition = DFA107_transition;
        }
        public String getDescription() {
            return "6109:1: ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedName ) ) otherlv_4= '.' otherlv_5= '*' ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) )";
        }
    }
 

    public static final BitSet FOLLOW_ruleDomainModel_in_entryRuleDomainModel75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDomainModel85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAbstractElement_in_ruleDomainModel130 = new BitSet(new long[]{0x0000000000192002L});
    public static final BitSet FOLLOW_ruleAbstractElement_in_entryRuleAbstractElement166 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAbstractElement176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackageDeclaration_in_ruleAbstractElement223 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntity_in_ruleAbstractElement250 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_ruleAbstractElement277 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTrait_in_ruleAbstractElement304 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackageDeclaration_in_entryRulePackageDeclaration339 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePackageDeclaration349 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_rulePackageDeclaration386 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_rulePackageDeclaration407 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_rulePackageDeclaration419 = new BitSet(new long[]{0x000000000019A000L});
    public static final BitSet FOLLOW_ruleAbstractElement_in_rulePackageDeclaration440 = new BitSet(new long[]{0x000000000019A000L});
    public static final BitSet FOLLOW_15_in_rulePackageDeclaration453 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_entryRuleImport489 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImport499 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_ruleImport536 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQNameWithWildcard_in_ruleImport557 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQNameWithWildcard_in_entryRuleQNameWithWildcard594 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQNameWithWildcard605 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleQNameWithWildcard652 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_17_in_ruleQNameWithWildcard671 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleQNameWithWildcard684 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTrait_in_entryRuleTrait726 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTrait736 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleTrait773 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleTrait794 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleTrait806 = new BitSet(new long[]{0x0000000000808000L,0x0000000070000000L});
    public static final BitSet FOLLOW_ruleOperation_in_ruleTrait827 = new BitSet(new long[]{0x0000000000808000L,0x0000000070000000L});
    public static final BitSet FOLLOW_15_in_ruleTrait840 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntity_in_entryRuleEntity876 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEntity886 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_ruleEntity923 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleEntity944 = new BitSet(new long[]{0x0000000000604000L});
    public static final BitSet FOLLOW_21_in_ruleEntity957 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleEntity978 = new BitSet(new long[]{0x0000000000404000L});
    public static final BitSet FOLLOW_22_in_ruleEntity993 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEntity1013 = new BitSet(new long[]{0x0000000000404000L});
    public static final BitSet FOLLOW_14_in_ruleEntity1027 = new BitSet(new long[]{0x0000000000808000L,0x0000000070000000L});
    public static final BitSet FOLLOW_ruleFeature_in_ruleEntity1048 = new BitSet(new long[]{0x0000000000808000L,0x0000000070000000L});
    public static final BitSet FOLLOW_15_in_ruleEntity1061 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTestAnnotation_in_entryRuleTestAnnotation1098 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTestAnnotation1109 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_ruleTestAnnotation1146 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFeature_in_entryRuleFeature1185 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFeature1195 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProperty_in_ruleFeature1242 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOperation_in_ruleFeature1269 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProperty_in_entryRuleProperty1304 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleProperty1314 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVariable_in_ruleProperty1361 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValue_in_ruleProperty1388 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVariable_in_entryRuleVariable1423 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVariable1433 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVisibility_in_ruleVariable1479 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleVariable1491 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleVariable1512 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleVariable1524 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleVariable1545 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValue_in_entryRuleValue1581 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleValue1591 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVisibility_in_ruleValue1637 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleValue1649 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleValue1670 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleValue1682 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleValue1703 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOperation_in_entryRuleOperation1739 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOperation1749 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTestAnnotation_in_ruleOperation1795 = new BitSet(new long[]{0x0000000000800000L,0x0000000070000000L});
    public static final BitSet FOLLOW_ruleVisibility_in_ruleOperation1817 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleOperation1829 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleOperation1850 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleOperation1862 = new BitSet(new long[]{0x0001000050000010L});
    public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_ruleOperation1884 = new BitSet(new long[]{0x0000000060000000L});
    public static final BitSet FOLLOW_29_in_ruleOperation1897 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_ruleOperation1918 = new BitSet(new long[]{0x0000000060000000L});
    public static final BitSet FOLLOW_30_in_ruleOperation1934 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleOperation1946 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleOperation1967 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_ruleOperation1988 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpression_in_entryRuleXExpression2024 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXExpression2034 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAssignment_in_ruleXExpression2080 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAssignment_in_entryRuleXAssignment2114 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXAssignment2124 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFeatureCallID_in_ruleXAssignment2182 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_ruleOpSingleAssign_in_ruleXAssignment2198 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXAssignment_in_ruleXAssignment2218 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXOrExpression_in_ruleXAssignment2248 = new BitSet(new long[]{0x0000000300000002L});
    public static final BitSet FOLLOW_ruleOpMultiAssign_in_ruleXAssignment2301 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXAssignment_in_ruleXAssignment2324 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign2364 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpSingleAssign2375 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_ruleOpSingleAssign2412 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign2452 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpMultiAssign2463 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleOpMultiAssign2501 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_ruleOpMultiAssign2520 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression2560 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXOrExpression2570 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAndExpression_in_ruleXOrExpression2617 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_ruleOpOr_in_ruleXOrExpression2670 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXAndExpression_in_ruleXOrExpression2693 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_ruleOpOr_in_entryRuleOpOr2732 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpOr2743 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleOpOr2780 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression2819 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXAndExpression2829 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression2876 = new BitSet(new long[]{0x0000000800000002L});
    public static final BitSet FOLLOW_ruleOpAnd_in_ruleXAndExpression2929 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression2952 = new BitSet(new long[]{0x0000000800000002L});
    public static final BitSet FOLLOW_ruleOpAnd_in_entryRuleOpAnd2991 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpAnd3002 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_35_in_ruleOpAnd3039 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression3078 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXEqualityExpression3088 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression3135 = new BitSet(new long[]{0x000000F000000002L});
    public static final BitSet FOLLOW_ruleOpEquality_in_ruleXEqualityExpression3188 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression3211 = new BitSet(new long[]{0x000000F000000002L});
    public static final BitSet FOLLOW_ruleOpEquality_in_entryRuleOpEquality3250 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpEquality3261 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_ruleOpEquality3299 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleOpEquality3318 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_38_in_ruleOpEquality3337 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_39_in_ruleOpEquality3356 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression3396 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXRelationalExpression3406 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression3453 = new BitSet(new long[]{0x00001F0000000002L});
    public static final BitSet FOLLOW_40_in_ruleXRelationalExpression3489 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXRelationalExpression3512 = new BitSet(new long[]{0x00001F0000000002L});
    public static final BitSet FOLLOW_ruleOpCompare_in_ruleXRelationalExpression3573 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression3596 = new BitSet(new long[]{0x00001F0000000002L});
    public static final BitSet FOLLOW_ruleOpCompare_in_entryRuleOpCompare3636 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpCompare3647 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_41_in_ruleOpCompare3685 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_ruleOpCompare3704 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_ruleOpCompare3723 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_44_in_ruleOpCompare3742 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression3782 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXOtherOperatorExpression3792 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression3839 = new BitSet(new long[]{0x000FF80000000002L});
    public static final BitSet FOLLOW_ruleOpOther_in_ruleXOtherOperatorExpression3892 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression3915 = new BitSet(new long[]{0x000FF80000000002L});
    public static final BitSet FOLLOW_ruleOpOther_in_entryRuleOpOther3954 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpOther3965 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_ruleOpOther4003 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleOpOther4022 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_ruleOpOther4042 = new BitSet(new long[]{0x0000800000000000L});
    public static final BitSet FOLLOW_47_in_ruleOpOther4055 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_47_in_ruleOpOther4075 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_48_in_ruleOpOther4094 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_ruleOpOther4114 = new BitSet(new long[]{0x0000080000000000L});
    public static final BitSet FOLLOW_43_in_ruleOpOther4145 = new BitSet(new long[]{0x0000080000000000L});
    public static final BitSet FOLLOW_43_in_ruleOpOther4158 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_ruleOpOther4179 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_44_in_ruleOpOther4201 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_44_in_ruleOpOther4232 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_44_in_ruleOpOther4245 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_44_in_ruleOpOther4266 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleOpOther4287 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_50_in_ruleOpOther4306 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_51_in_ruleOpOther4325 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression4365 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXAdditiveExpression4375 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression4422 = new BitSet(new long[]{0x0030000000000002L});
    public static final BitSet FOLLOW_ruleOpAdd_in_ruleXAdditiveExpression4475 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression4498 = new BitSet(new long[]{0x0030000000000002L});
    public static final BitSet FOLLOW_ruleOpAdd_in_entryRuleOpAdd4537 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpAdd4548 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_ruleOpAdd4586 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_53_in_ruleOpAdd4605 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression4645 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXMultiplicativeExpression4655 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression4702 = new BitSet(new long[]{0x01C0000000040002L});
    public static final BitSet FOLLOW_ruleOpMulti_in_ruleXMultiplicativeExpression4755 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression4778 = new BitSet(new long[]{0x01C0000000040002L});
    public static final BitSet FOLLOW_ruleOpMulti_in_entryRuleOpMulti4817 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpMulti4828 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_ruleOpMulti4866 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_54_in_ruleOpMulti4885 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_55_in_ruleOpMulti4904 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_56_in_ruleOpMulti4923 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation4963 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXUnaryOperation4973 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpUnary_in_ruleXUnaryOperation5031 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXUnaryOperation_in_ruleXUnaryOperation5052 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXCastedExpression_in_ruleXUnaryOperation5081 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpUnary_in_entryRuleOpUnary5117 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpUnary5128 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_57_in_ruleOpUnary5166 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_53_in_ruleOpUnary5185 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_ruleOpUnary5204 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression5244 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXCastedExpression5254 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_ruleXCastedExpression5301 = new BitSet(new long[]{0x0400000000000002L});
    public static final BitSet FOLLOW_58_in_ruleXCastedExpression5336 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXCastedExpression5359 = new BitSet(new long[]{0x0400000000000002L});
    public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_entryRuleXMemberFeatureCall5397 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXMemberFeatureCall5407 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXPrimaryExpression_in_ruleXMemberFeatureCall5454 = new BitSet(new long[]{0x1800000000020002L});
    public static final BitSet FOLLOW_17_in_ruleXMemberFeatureCall5503 = new BitSet(new long[]{0x0000000000000010L,0x0000000000003C00L});
    public static final BitSet FOLLOW_ruleFeatureCallID_in_ruleXMemberFeatureCall5526 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_ruleOpSingleAssign_in_ruleXMemberFeatureCall5542 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXAssignment_in_ruleXMemberFeatureCall5564 = new BitSet(new long[]{0x1800000000020002L});
    public static final BitSet FOLLOW_17_in_ruleXMemberFeatureCall5650 = new BitSet(new long[]{0x0000100000000010L,0x0000000000003C00L});
    public static final BitSet FOLLOW_59_in_ruleXMemberFeatureCall5674 = new BitSet(new long[]{0x0000100000000010L,0x0000000000003C00L});
    public static final BitSet FOLLOW_60_in_ruleXMemberFeatureCall5711 = new BitSet(new long[]{0x0000100000000010L,0x0000000000003C00L});
    public static final BitSet FOLLOW_44_in_ruleXMemberFeatureCall5740 = new BitSet(new long[]{0x0001000010000010L,0x0000000004000000L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXMemberFeatureCall5761 = new BitSet(new long[]{0x0000080020000000L});
    public static final BitSet FOLLOW_29_in_ruleXMemberFeatureCall5774 = new BitSet(new long[]{0x0001000010000010L,0x0000000004000000L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXMemberFeatureCall5795 = new BitSet(new long[]{0x0000080020000000L});
    public static final BitSet FOLLOW_43_in_ruleXMemberFeatureCall5809 = new BitSet(new long[]{0x0000000000000010L,0x0000000000003C00L});
    public static final BitSet FOLLOW_ruleFeatureCallID_in_ruleXMemberFeatureCall5834 = new BitSet(new long[]{0x5800000010020002L});
    public static final BitSet FOLLOW_28_in_ruleXMemberFeatureCall5868 = new BitSet(new long[]{0x62311000500041F0L,0x0000000000FF7F95L});
    public static final BitSet FOLLOW_ruleXShortClosure_in_ruleXMemberFeatureCall5953 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXMemberFeatureCall5981 = new BitSet(new long[]{0x0000000060000000L});
    public static final BitSet FOLLOW_29_in_ruleXMemberFeatureCall5994 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXMemberFeatureCall6015 = new BitSet(new long[]{0x0000000060000000L});
    public static final BitSet FOLLOW_30_in_ruleXMemberFeatureCall6032 = new BitSet(new long[]{0x5800000000020002L});
    public static final BitSet FOLLOW_ruleXClosure_in_ruleXMemberFeatureCall6067 = new BitSet(new long[]{0x1800000000020002L});
    public static final BitSet FOLLOW_ruleXPrimaryExpression_in_entryRuleXPrimaryExpression6107 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXPrimaryExpression6117 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXConstructorCall_in_ruleXPrimaryExpression6164 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_ruleXPrimaryExpression6191 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXSwitchExpression_in_ruleXPrimaryExpression6218 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXFeatureCall_in_ruleXPrimaryExpression6245 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXLiteral_in_ruleXPrimaryExpression6272 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXIfExpression_in_ruleXPrimaryExpression6299 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXForLoopExpression_in_ruleXPrimaryExpression6326 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXWhileExpression_in_ruleXPrimaryExpression6353 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXDoWhileExpression_in_ruleXPrimaryExpression6380 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXThrowExpression_in_ruleXPrimaryExpression6407 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXReturnExpression_in_ruleXPrimaryExpression6434 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_ruleXPrimaryExpression6461 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_ruleXPrimaryExpression6488 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXLiteral_in_entryRuleXLiteral6523 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXLiteral6533 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXCollectionLiteral_in_ruleXLiteral6580 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXClosure_in_ruleXLiteral6620 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBooleanLiteral_in_ruleXLiteral6648 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXNumberLiteral_in_ruleXLiteral6675 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXNullLiteral_in_ruleXLiteral6702 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXStringLiteral_in_ruleXLiteral6729 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXTypeLiteral_in_ruleXLiteral6756 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXCollectionLiteral_in_entryRuleXCollectionLiteral6791 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXCollectionLiteral6801 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXSetLiteral_in_ruleXCollectionLiteral6848 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXListLiteral_in_ruleXCollectionLiteral6875 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXSetLiteral_in_entryRuleXSetLiteral6910 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXSetLiteral6920 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_61_in_ruleXSetLiteral6966 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleXSetLiteral6978 = new BitSet(new long[]{0x623010001000C1F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXSetLiteral7000 = new BitSet(new long[]{0x0000000020008000L});
    public static final BitSet FOLLOW_29_in_ruleXSetLiteral7013 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXSetLiteral7034 = new BitSet(new long[]{0x0000000020008000L});
    public static final BitSet FOLLOW_15_in_ruleXSetLiteral7050 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXListLiteral_in_entryRuleXListLiteral7086 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXListLiteral7096 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_61_in_ruleXListLiteral7142 = new BitSet(new long[]{0x4000000000000000L});
    public static final BitSet FOLLOW_62_in_ruleXListLiteral7154 = new BitSet(new long[]{0xE2301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXListLiteral7176 = new BitSet(new long[]{0x8000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleXListLiteral7189 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXListLiteral7210 = new BitSet(new long[]{0x8000000020000000L});
    public static final BitSet FOLLOW_63_in_ruleXListLiteral7226 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXClosure_in_entryRuleXClosure7262 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXClosure7272 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_62_in_ruleXClosure7332 = new BitSet(new long[]{0xE2311000150041F0L,0x0000000000FF7F95L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXClosure7405 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_29_in_ruleXClosure7418 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXClosure7439 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_64_in_ruleXClosure7461 = new BitSet(new long[]{0xE2301000150041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpressionInClosure_in_ruleXClosure7498 = new BitSet(new long[]{0x8000000000000000L});
    public static final BitSet FOLLOW_63_in_ruleXClosure7510 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpressionInClosure_in_entryRuleXExpressionInClosure7546 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionInClosure7556 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpressionInsideBlock_in_ruleXExpressionInClosure7612 = new BitSet(new long[]{0x62301000150041F2L,0x0000000000FF7F96L});
    public static final BitSet FOLLOW_65_in_ruleXExpressionInClosure7625 = new BitSet(new long[]{0x62301000150041F2L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXShortClosure_in_entryRuleXShortClosure7665 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXShortClosure7675 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXShortClosure7783 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_29_in_ruleXShortClosure7796 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXShortClosure7817 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_64_in_ruleXShortClosure7839 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXShortClosure7875 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression7911 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXParenthesizedExpression7921 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_ruleXParenthesizedExpression7958 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXParenthesizedExpression7980 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_ruleXParenthesizedExpression7991 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression8027 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXIfExpression8037 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_66_in_ruleXIfExpression8083 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleXIfExpression8095 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXIfExpression8116 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_ruleXIfExpression8128 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXIfExpression8149 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
    public static final BitSet FOLLOW_67_in_ruleXIfExpression8170 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXIfExpression8192 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXSwitchExpression_in_entryRuleXSwitchExpression8230 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXSwitchExpression8240 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_68_in_ruleXSwitchExpression8286 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleXSwitchExpression8329 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleXSwitchExpression8341 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXSwitchExpression8365 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_28_in_ruleXSwitchExpression8409 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleXSwitchExpression8430 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleXSwitchExpression8442 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXSwitchExpression8465 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_ruleXSwitchExpression8477 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleXSwitchExpression8491 = new BitSet(new long[]{0x0001000012000010L,0x0000000000000040L});
    public static final BitSet FOLLOW_ruleXCasePart_in_ruleXSwitchExpression8512 = new BitSet(new long[]{0x0001000012008010L,0x0000000000000060L});
    public static final BitSet FOLLOW_69_in_ruleXSwitchExpression8526 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleXSwitchExpression8538 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXSwitchExpression8559 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleXSwitchExpression8573 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXCasePart_in_entryRuleXCasePart8609 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXCasePart8619 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXCasePart8665 = new BitSet(new long[]{0x0000000002000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_70_in_ruleXCasePart8679 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXCasePart8700 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleXCasePart8714 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXCasePart8735 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXForLoopExpression_in_entryRuleXForLoopExpression8771 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXForLoopExpression8781 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_71_in_ruleXForLoopExpression8827 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleXForLoopExpression8839 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXForLoopExpression8860 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleXForLoopExpression8872 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXForLoopExpression8893 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_ruleXForLoopExpression8905 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXForLoopExpression8926 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression8962 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXWhileExpression8972 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_72_in_ruleXWhileExpression9018 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleXWhileExpression9030 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXWhileExpression9051 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_ruleXWhileExpression9063 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXWhileExpression9084 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXDoWhileExpression_in_entryRuleXDoWhileExpression9120 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXDoWhileExpression9130 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_73_in_ruleXDoWhileExpression9176 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXDoWhileExpression9197 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_72_in_ruleXDoWhileExpression9209 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleXDoWhileExpression9221 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXDoWhileExpression9242 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_ruleXDoWhileExpression9254 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression9290 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXBlockExpression9300 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_ruleXBlockExpression9346 = new BitSet(new long[]{0x623010001500C1F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpressionInsideBlock_in_ruleXBlockExpression9368 = new BitSet(new long[]{0x623010001500C1F0L,0x0000000000FF7F96L});
    public static final BitSet FOLLOW_65_in_ruleXBlockExpression9381 = new BitSet(new long[]{0x623010001500C1F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_15_in_ruleXBlockExpression9397 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpressionInsideBlock_in_entryRuleXExpressionInsideBlock9433 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionInsideBlock9443 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXVariableDeclaration_in_ruleXExpressionInsideBlock9490 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXExpressionInsideBlock9517 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration9552 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXVariableDeclaration9562 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_ruleXVariableDeclaration9615 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_26_in_ruleXVariableDeclaration9646 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXVariableDeclaration9694 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleXVariableDeclaration9715 = new BitSet(new long[]{0x0000000080000002L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleXVariableDeclaration9744 = new BitSet(new long[]{0x0000000080000002L});
    public static final BitSet FOLLOW_31_in_ruleXVariableDeclaration9758 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXVariableDeclaration9779 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_entryRuleJvmFormalParameter9817 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmFormalParameter9827 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmFormalParameter9873 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleJvmFormalParameter9895 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_entryRuleFullJvmFormalParameter9931 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFullJvmFormalParameter9941 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleFullJvmFormalParameter9987 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleFullJvmFormalParameter10008 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall10044 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXFeatureCall10054 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStaticQualifier_in_ruleXFeatureCall10111 = new BitSet(new long[]{0x0000100000000010L,0x0000000000007C00L});
    public static final BitSet FOLLOW_44_in_ruleXFeatureCall10125 = new BitSet(new long[]{0x0001000010000010L,0x0000000004000000L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXFeatureCall10146 = new BitSet(new long[]{0x0000080020000000L});
    public static final BitSet FOLLOW_29_in_ruleXFeatureCall10159 = new BitSet(new long[]{0x0001000010000010L,0x0000000004000000L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXFeatureCall10180 = new BitSet(new long[]{0x0000080020000000L});
    public static final BitSet FOLLOW_43_in_ruleXFeatureCall10194 = new BitSet(new long[]{0x0000100000000010L,0x0000000000007C00L});
    public static final BitSet FOLLOW_ruleIdOrSuper_in_ruleXFeatureCall10219 = new BitSet(new long[]{0x4000000010000002L});
    public static final BitSet FOLLOW_28_in_ruleXFeatureCall10253 = new BitSet(new long[]{0x62311000500041F0L,0x0000000000FF7F95L});
    public static final BitSet FOLLOW_ruleXShortClosure_in_ruleXFeatureCall10338 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXFeatureCall10366 = new BitSet(new long[]{0x0000000060000000L});
    public static final BitSet FOLLOW_29_in_ruleXFeatureCall10379 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXFeatureCall10400 = new BitSet(new long[]{0x0000000060000000L});
    public static final BitSet FOLLOW_30_in_ruleXFeatureCall10417 = new BitSet(new long[]{0x4000000000000002L});
    public static final BitSet FOLLOW_ruleXClosure_in_ruleXFeatureCall10452 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFeatureCallID_in_entryRuleFeatureCallID10490 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFeatureCallID10501 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleFeatureCallID10548 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_74_in_ruleFeatureCallID10572 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_75_in_ruleFeatureCallID10591 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_76_in_ruleFeatureCallID10610 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_77_in_ruleFeatureCallID10629 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIdOrSuper_in_entryRuleIdOrSuper10670 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIdOrSuper10681 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFeatureCallID_in_ruleIdOrSuper10728 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_78_in_ruleIdOrSuper10752 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStaticQualifier_in_entryRuleStaticQualifier10793 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStaticQualifier10804 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleStaticQualifier10851 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
    public static final BitSet FOLLOW_79_in_ruleStaticQualifier10869 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ruleXConstructorCall_in_entryRuleXConstructorCall10910 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXConstructorCall10920 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_ruleXConstructorCall10966 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXConstructorCall10989 = new BitSet(new long[]{0x4000100010000002L});
    public static final BitSet FOLLOW_44_in_ruleXConstructorCall11010 = new BitSet(new long[]{0x0001000010000010L,0x0000000004000000L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXConstructorCall11032 = new BitSet(new long[]{0x0000080020000000L});
    public static final BitSet FOLLOW_29_in_ruleXConstructorCall11045 = new BitSet(new long[]{0x0001000010000010L,0x0000000004000000L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXConstructorCall11066 = new BitSet(new long[]{0x0000080020000000L});
    public static final BitSet FOLLOW_43_in_ruleXConstructorCall11080 = new BitSet(new long[]{0x4000000010000002L});
    public static final BitSet FOLLOW_28_in_ruleXConstructorCall11103 = new BitSet(new long[]{0x62311000500041F0L,0x0000000000FF7F95L});
    public static final BitSet FOLLOW_ruleXShortClosure_in_ruleXConstructorCall11176 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXConstructorCall11204 = new BitSet(new long[]{0x0000000060000000L});
    public static final BitSet FOLLOW_29_in_ruleXConstructorCall11217 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXConstructorCall11238 = new BitSet(new long[]{0x0000000060000000L});
    public static final BitSet FOLLOW_30_in_ruleXConstructorCall11255 = new BitSet(new long[]{0x4000000000000002L});
    public static final BitSet FOLLOW_ruleXClosure_in_ruleXConstructorCall11290 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBooleanLiteral_in_entryRuleXBooleanLiteral11327 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXBooleanLiteral11337 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_81_in_ruleXBooleanLiteral11384 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_82_in_ruleXBooleanLiteral11408 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral11458 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXNullLiteral11468 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_83_in_ruleXNullLiteral11514 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXNumberLiteral_in_entryRuleXNumberLiteral11550 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXNumberLiteral11560 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumber_in_ruleXNumberLiteral11615 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral11651 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXStringLiteral11661 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleXStringLiteral11712 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXTypeLiteral_in_entryRuleXTypeLiteral11753 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXTypeLiteral11763 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_84_in_ruleXTypeLiteral11809 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleXTypeLiteral11821 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXTypeLiteral11844 = new BitSet(new long[]{0x4000000040000000L});
    public static final BitSet FOLLOW_ruleArrayBrackets_in_ruleXTypeLiteral11865 = new BitSet(new long[]{0x4000000040000000L});
    public static final BitSet FOLLOW_30_in_ruleXTypeLiteral11878 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXThrowExpression_in_entryRuleXThrowExpression11914 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXThrowExpression11924 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_85_in_ruleXThrowExpression11970 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXThrowExpression11991 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXReturnExpression_in_entryRuleXReturnExpression12027 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXReturnExpression12037 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_86_in_ruleXReturnExpression12083 = new BitSet(new long[]{0x62301000100041F2L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXReturnExpression12114 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_entryRuleXTryCatchFinallyExpression12151 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXTryCatchFinallyExpression12161 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_87_in_ruleXTryCatchFinallyExpression12207 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression12228 = new BitSet(new long[]{0x0000000000000000L,0x0000000003000000L});
    public static final BitSet FOLLOW_ruleXCatchClause_in_ruleXTryCatchFinallyExpression12258 = new BitSet(new long[]{0x0000000000000002L,0x0000000003000000L});
    public static final BitSet FOLLOW_88_in_ruleXTryCatchFinallyExpression12280 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression12302 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_88_in_ruleXTryCatchFinallyExpression12324 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression12345 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXCatchClause_in_entryRuleXCatchClause12383 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXCatchClause12393 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_89_in_ruleXCatchClause12438 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleXCatchClause12451 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_ruleXCatchClause12472 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_ruleXCatchClause12484 = new BitSet(new long[]{0x62301000100041F0L,0x0000000000FF7F94L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXCatchClause12505 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName12542 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName12553 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleQualifiedName12600 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_17_in_ruleQualifiedName12628 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleQualifiedName12651 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_ruleNumber_in_entryRuleNumber12705 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNumber12716 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_HEX_in_ruleNumber12760 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleNumber12788 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_RULE_DECIMAL_in_ruleNumber12814 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_17_in_ruleNumber12834 = new BitSet(new long[]{0x0000000000000180L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleNumber12850 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_DECIMAL_in_ruleNumber12876 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_entryRuleJvmTypeReference12929 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmTypeReference12939 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmParameterizedTypeReference_in_ruleJvmTypeReference12987 = new BitSet(new long[]{0x4000000000000002L});
    public static final BitSet FOLLOW_ruleArrayBrackets_in_ruleJvmTypeReference13023 = new BitSet(new long[]{0x4000000000000002L});
    public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_ruleJvmTypeReference13054 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleArrayBrackets_in_entryRuleArrayBrackets13090 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleArrayBrackets13101 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_62_in_ruleArrayBrackets13139 = new BitSet(new long[]{0x8000000000000000L});
    public static final BitSet FOLLOW_63_in_ruleArrayBrackets13152 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_entryRuleXFunctionTypeRef13192 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXFunctionTypeRef13202 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_ruleXFunctionTypeRef13240 = new BitSet(new long[]{0x0001000050000010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef13262 = new BitSet(new long[]{0x0000000060000000L});
    public static final BitSet FOLLOW_29_in_ruleXFunctionTypeRef13275 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef13296 = new BitSet(new long[]{0x0000000060000000L});
    public static final BitSet FOLLOW_30_in_ruleXFunctionTypeRef13312 = new BitSet(new long[]{0x0001000000000000L});
    public static final BitSet FOLLOW_48_in_ruleXFunctionTypeRef13326 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef13347 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmParameterizedTypeReference_in_entryRuleJvmParameterizedTypeReference13383 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmParameterizedTypeReference13393 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleJvmParameterizedTypeReference13441 = new BitSet(new long[]{0x0000100000000002L});
    public static final BitSet FOLLOW_44_in_ruleJvmParameterizedTypeReference13462 = new BitSet(new long[]{0x0001000010000010L,0x0000000004000000L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleJvmParameterizedTypeReference13484 = new BitSet(new long[]{0x0000080020000000L});
    public static final BitSet FOLLOW_29_in_ruleJvmParameterizedTypeReference13497 = new BitSet(new long[]{0x0001000010000010L,0x0000000004000000L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleJvmParameterizedTypeReference13518 = new BitSet(new long[]{0x0000080020000000L});
    public static final BitSet FOLLOW_43_in_ruleJvmParameterizedTypeReference13532 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_entryRuleJvmArgumentTypeReference13570 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmArgumentTypeReference13580 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmArgumentTypeReference13627 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_ruleJvmArgumentTypeReference13654 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_entryRuleJvmWildcardTypeReference13689 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmWildcardTypeReference13699 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_90_in_ruleJvmWildcardTypeReference13745 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004400L});
    public static final BitSet FOLLOW_ruleJvmUpperBound_in_ruleJvmWildcardTypeReference13767 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmLowerBound_in_ruleJvmWildcardTypeReference13794 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmUpperBound_in_entryRuleJvmUpperBound13832 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBound13842 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_74_in_ruleJvmUpperBound13879 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmUpperBound13900 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmUpperBoundAnded_in_entryRuleJvmUpperBoundAnded13936 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBoundAnded13946 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_91_in_ruleJvmUpperBoundAnded13983 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmUpperBoundAnded14004 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmLowerBound_in_entryRuleJvmLowerBound14040 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmLowerBound14050 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_78_in_ruleJvmLowerBound14087 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmLowerBound14108 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard14147 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard14158 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildcard14205 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleQualifiedNameWithWildcard14223 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleQualifiedNameWithWildcard14236 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidID_in_entryRuleValidID14277 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleValidID14288 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleValidID14327 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXImportDeclaration_in_entryRuleXImportDeclaration14373 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXImportDeclaration14383 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_76_in_ruleXImportDeclaration14420 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000800L});
    public static final BitSet FOLLOW_75_in_ruleXImportDeclaration14440 = new BitSet(new long[]{0x0000000000000010L,0x0000000000002000L});
    public static final BitSet FOLLOW_77_in_ruleXImportDeclaration14471 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXImportDeclaration14508 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleXImportDeclaration14520 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleXImportDeclaration14532 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXImportDeclaration14562 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_ruleXImportDeclaration14589 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
    public static final BitSet FOLLOW_65_in_ruleXImportDeclaration14603 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_92_in_ruleVisibility14655 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_93_in_ruleVisibility14672 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_94_in_ruleVisibility14689 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpMultiAssign_in_synpred1_InternalMyDsl2269 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpOr_in_synpred2_InternalMyDsl2638 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpAnd_in_synpred3_InternalMyDsl2897 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpEquality_in_synpred4_InternalMyDsl3156 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_synpred5_InternalMyDsl3470 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpCompare_in_synpred6_InternalMyDsl3541 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpOther_in_synpred7_InternalMyDsl3860 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_synpred8_InternalMyDsl4129 = new BitSet(new long[]{0x0000080000000000L});
    public static final BitSet FOLLOW_43_in_synpred8_InternalMyDsl4134 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_44_in_synpred9_InternalMyDsl4216 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_44_in_synpred9_InternalMyDsl4221 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpAdd_in_synpred10_InternalMyDsl4443 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpMulti_in_synpred11_InternalMyDsl4723 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_58_in_synpred12_InternalMyDsl5317 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_synpred13_InternalMyDsl5471 = new BitSet(new long[]{0x0000000000000010L,0x0000000000003C00L});
    public static final BitSet FOLLOW_ruleFeatureCallID_in_synpred13_InternalMyDsl5480 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_ruleOpSingleAssign_in_synpred13_InternalMyDsl5486 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_synpred14_InternalMyDsl5589 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_59_in_synpred14_InternalMyDsl5603 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_60_in_synpred14_InternalMyDsl5623 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_synpred15_InternalMyDsl5850 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred16_InternalMyDsl5902 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_29_in_synpred16_InternalMyDsl5909 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred16_InternalMyDsl5916 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_64_in_synpred16_InternalMyDsl5930 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_62_in_synpred17_InternalMyDsl6050 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_62_in_synpred18_InternalMyDsl6601 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred20_InternalMyDsl7351 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_29_in_synpred20_InternalMyDsl7358 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred20_InternalMyDsl7365 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_64_in_synpred20_InternalMyDsl7379 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_67_in_synpred22_InternalMyDsl8162 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidID_in_synpred23_InternalMyDsl8304 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_synpred23_InternalMyDsl8310 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_synpred24_InternalMyDsl8386 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_synpred24_InternalMyDsl8393 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_synpred24_InternalMyDsl8399 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_synpred25_InternalMyDsl9664 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleValidID_in_synpred25_InternalMyDsl9673 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_synpred26_InternalMyDsl10235 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred27_InternalMyDsl10287 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_29_in_synpred27_InternalMyDsl10294 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred27_InternalMyDsl10301 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_64_in_synpred27_InternalMyDsl10315 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_62_in_synpred28_InternalMyDsl10435 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_44_in_synpred29_InternalMyDsl11002 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_synpred30_InternalMyDsl11095 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred31_InternalMyDsl11125 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_29_in_synpred31_InternalMyDsl11132 = new BitSet(new long[]{0x0001000010000010L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred31_InternalMyDsl11139 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_64_in_synpred31_InternalMyDsl11153 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_62_in_synpred32_InternalMyDsl11273 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpression_in_synpred33_InternalMyDsl12097 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_89_in_synpred34_InternalMyDsl12242 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_88_in_synpred35_InternalMyDsl12272 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_synpred37_InternalMyDsl12619 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleArrayBrackets_in_synpred38_InternalMyDsl13002 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_44_in_synpred39_InternalMyDsl13454 = new BitSet(new long[]{0x0000000000000002L});

}